2013-08-02 4 views
0

У меня есть сетка (gridView1) на webform1.aspx с кнопкой, которая может вызвать всплывающее окно. Всплывающее окно ссылается на webform2.aspx, которые позволяют пользователям импортировать файл excel для получения данных. Ожидается, что данные будут отображаться в виде сетки на webform1.aspx. Однако как я могу привязать таблицу gridView1, как только загрузится файл excel?Databind gridview на другой странице

У меня есть идеи сделать это, не уверен, что логика правильная.

webform1.aspx.cs

//tempDT is a DataTable type to store the data of the grid  
Session["data"] = tempDT; 
/*Open a popup with webform2.aspx*/ 

webform2.aspx.cs

//Get data from original data table and add new data get from excel 
DataTable tempDT = (DataTable)Session["data"]; 
/* Add new data from excel to tempDT here */ 
Session["data"] = tempDT; 

Но у меня нет никаких идей DataBind вид сетки после этого, как я не могу вызовите вид сетки в webform2.aspx

ответ

2

Я не уверен, что это поможет вам не

GridView grv = ((GridView)this.Page.PreviousPage.FindControl("gridview1")); 

но другой способ может, как вы думаете, просто убедитесь, что сделать пост обратно для WebForm1, как редирект на WebForm1 и по форме нагрузки

вы можете проверить, что если сессия не равно нулю, то связать с данными сеанса

+0

Спасибо, но FindControl кажется не работает, так как он возвращает null. Разве это невозможно для всплывающих окон или для представления сетки? Я никогда не использую его раньше, поэтому у меня нет понятия об этом. В любом случае спасибо! – Pang

+0

как вы это использовали? –

+0

См. Обновленный ответ –

0

Вы должны добавить еще один вид сетки в 'ebform2.aspx и поместить его в сбоку панели управления, которые помогут вам скрыть gridview. В кнопке импорта сделайте панель видимой, чтобы вид сетки с новым значением появлялся на той же странице.

+0

Но всплывающее окно закроется после загрузки данных из Excel и шоу экран только отображающей WebForm1.aspx с новыми данными показать на экране сетки. Или я неправильно понял ваше предложение? В любом случае спасибо. – Pang

1

То, что вы хотите сделать, это:
1. При нажатии на кнопку будет всплывающее окно (2 веб-формы вы говорите)
2. Теперь пользователь Загрузить данные из файла Excel.
3. Вы хотите связать эти данные в сетке на веб form1

Хорошо, теперь создать процесс, как показано ниже: упомянутый

  1. Возьмите переменную сеанса, проверьте, если он не является нулевым Свяжите данные с него на WebForm1, как показано ниже:
if (Session["ExcelData"]!=null) 
{ 
    //Code here of binding the grid 
    DataTable dt= (DataTable)Session["ExcelData"]; 
    GridView1.DataSource= dt; 
    GridView1.DataBind(); 
} 
  1. Теперь перейдите на кнопку второго веб-формы, на которую вы загружаете данные из excel.
  2. Создать DataTable и заполнить его данными из Excel (данные, загруженные из Excel)
  3. и хранить эту таблицу данных в сессии, как показано ниже:

Session["ExcelData"]=dtExceldata;

  1. закрыть всплывающее окно и звоните GridBind Метод.

ОБНОВЛЕНО:

Это все. Надеюсь, что это поможет вам

+0

Спасибо. Но основная проблема заключается в шаге 5. Как и когда я должен вызвать метод GridBind, поскольку он должен быть найден в webform1? webform1 не должен знать, когда всплывающее окно близко. С другой стороны, я не могу вызвать GridBind в webform2, поскольку gridView1 принадлежит webform1. Это моя проблема. Более подробная информация о вашем решении? Заранее спасибо! – Pang

Смежные вопросы