C# 如何在C中只更新Gridview#
我的C#ASP.net应用程序中有gridview 当用户编辑一行时,我所要做的就是更新gridview的数据源(还不是数据库,因为我只是在最后获取datagrid的数据源,并将其作为数据集推送到数据库中) 但是我得到的值是旧值,而不是我在gridview上编辑的更新值 为什么会这样?我遵循所有关于这些链接的建议C# 如何在C中只更新Gridview#,c#,asp.net,gridview,C#,Asp.net,Gridview,我的C#ASP.net应用程序中有gridview 当用户编辑一行时,我所要做的就是更新gridview的数据源(还不是数据库,因为我只是在最后获取datagrid的数据源,并将其作为数据集推送到数据库中) 但是我得到的值是旧值,而不是我在gridview上编辑的更新值 为什么会这样?我遵循所有关于这些链接的建议 protected void grdViewDetails_RowUpdating(object sender, GridViewUpdateEventArgs e)
protected void grdViewDetails_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = (GridViewRow)grdViewDetails.Rows[e.RowIndex];
int adsf = row.Controls.Count;
foreach (Control item in row.Controls)
{
if (item.Controls[0] is TextBox)
{
TextBox textbox = (TextBox)item.Controls[0];
string x = textbox.Text;
//on the second for loop the string variable x = Employee1
}
if (item.Controls[0] is Label)
{
Label mylabel = (Label)item;
//do stuff
}
现在textbox变量x应该是xxxxxxx,但它仍然是旧值。。。。为什么会发生这种情况
你不能只更新gridview而不更新任何其他数据集/源。因为我在最后使用了gridview的整个数据源。您可以使用
GridViewUpdateEventArgs
访问新值。下面是一个例子:
您可以使用调试器更仔细地检查
e
变量,并找出需要哪些值。您可以使用GridViewUpdateEventArgs
访问新值。下面是一个例子:
您可以使用调试器更仔细地检查
e
变量,并找出需要哪些值。问题是,e.NewValues计数为0。。。。也许因为它的数据源是一个数据集?啊,我明白我的问题是什么了,谢谢!我没有将if(!isPostback)放在我的load()中,因此将旧值重新加载到编辑框中。谢谢,事情是,e.NewValues计数是0。。。。也许因为它的数据源是一个数据集?啊,我明白我的问题是什么了,谢谢!我没有将if(!isPostback)放在我的load()中,因此将旧值重新加载到编辑框中。谢谢
void CustomersGridView_RowUpdating(Object sender, GridViewUpdateEventArgs e)
{
// Iterate through the NewValues collection and HTML encode all
// user-provided values before updating the data source.
foreach (DictionaryEntry entry in e.NewValues)
{
e.NewValues[entry.Key] = Server.HtmlEncode(entry.Value.ToString());
}
}