2012-06-24 3 views
1

Я только начал изучать ASP.Net. Вчера вечером я работал над Grid View, в котором я заполнял данные, напрямую отдавая команду базе данных. Я не задал ни одного поля шаблона для моей сетки, и я установил для кнопки AutoGenerated edit значение true. Данные отображаются корректно, но, пытаясь обработать событие обновления, я столкнулся с проблемой, поскольку я не могу получить значение ячейки для строки, которую я обновляю.Получение значения DataGrid Cell

Я много гугл, но все примеры для получения значения ячейки основаны на поле шаблона, но в моем случае я не определяю столбцы сетки во время разработки. Пожалуйста, помогите мне.

Мой код ниже: (метод GridView1_RowUpdating дает пустое значение, когда я проверил, применяя точку останова)

private void FillGrid() 
     { 
      SqlConnection con = new SqlConnection("Data Source=.\\sqlexpress;Initial Catalog=TestDatabase;Integrated security=true;"); 
      DataTable dt = new DataTable("Student"); 
      using (SqlDataAdapter adapter = new SqlDataAdapter("select name,age,Fathername,dob from student", con)) 
      { 
       adapter.Fill(dt); 
      } 
      GridView1.DataSource = dt; 
      GridView1.DataBind(); 
     } 
     protected void Button1_Click(object sender, EventArgs e) 
     { 
      FillGrid(); 
     } 

     protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
     { 
      //Response.Write("RowDataBoundEvent Occured"+" "+e.Row.RowType+"\n"); 
     } 

     protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) 
     { 
      GridView1.EditIndex = -1; 
      FillGrid(); 
     } 

     protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
     { 
      GridView1.EditIndex = e.NewEditIndex; 
      FillGrid(); 
     } 

     protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
     { 

      string name = GridView1.Rows[e.RowIndex].Cells[2].Text; 
      string age = GridView1.Rows[GridView1.EditIndex].Cells[3].Text; 
      string salary = GridView1.Rows[GridView1.EditIndex].Cells[4].Text; 
     } 

ответ

0

Заканчивать GridViewUpdateEventArgs.OldValues ​​и GridViewUpdateEventArgs.NewValues.

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    string name = e.NewValues[2]; 
    string age = e.NewValues[3]; 
    string salary = e.NewValues[4]; 
} 
+0

Сэр, я получаю индекс из исключения диапазона в этом случае –

+0

Infact я получаю счетчик 0 в словаре e.newvalues, когда я сделал быстрый часы на это –

+0

проверить это SO сообщение: HTTP: //stackoverflow.com/questions/6641474/why-im-getting-gridviewupdateeventargsnewvalues-and-gridviewupdateeventargsol – alexm

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