Я хочу, чтобы обновить строку в GridView
с этим кодом, но после редактирования GridView
не изменения:GridView значения строк не изменилось после обновления
protected void res_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//Retrieve the table from the session object.
DataTable dt = (DataTable)Session["dt"];
GridViewRow row =res.Rows[e.RowIndex];
dt.Rows[row.DataItemIndex]["name"] = ((TextBox)(row.Cells[6].Controls[0])).Text;
dt.Rows[row.DataItemIndex]["dewey"] = ((TextBox)(row.Cells[5].Controls[0])).Text;
*dt.Rows[row.DataItemIndex]["subject"] = ((TextBox)(row.Cells[4].Controls[0])).Text;
Session["dt"] = dt;
res.EditIndex = -1;
res.DataSource = dt;
res.DataBind();
}
мой Page_Load
:
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt;
if (!IsPostBack)
{
dt= Converter.ListBooks(new classes.Book().GetAll());
Session["dt"] = dt;
res.DataSource = dt;
res.DataBind();
}
else
{
dt=(DataTable)Session["dt"];
res.DataSource = dt;
res.DataBind();
}
}
, например, я изменил линию, есть * к этому:
dt.Rows[row.DataItemIndex]["subject"] = "tx";
и после редактирования ubject "изменен на" tx ", поэтому я не знаю, почему ((TextBox)(row.Cells[4].Controls[0])).Text
возвращает текст TextBox
перед редактированием?
удалите часть else в page_load, вы действительно не должны ее связывать. пожалуйста, привяжите gridview в событиях, которые повышают обратную связь – naveen