0

我的 C# ASP.net 应用程序中有 gridview。

当用户编辑一行时,我要做的就是更新gridview的数据源(还不是数据库,因为我只是在最后将datagrid的数据源作为数据集推送到我的数据库中)。

但是我得到的值是旧值,而不是在 gridview 上编辑的更新值。

为什么会这样?我正在遵循这些链接上的所有建议。

    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
           }

在此处输入图像描述

在此处输入图像描述

现在文本框变量 x 应该是 xxxxxxx,但它仍然是旧值....为什么会发生这种情况?

你不能只更新gridview而不更新任何其他数据集/源。因为我最后使用了gridview的整个数据源。

4

1 回答 1

3

您可以使用 访问新值GridViewUpdateEventArgs这是文档中的一个示例:

  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());

    }
  }

您可以使用调试器e更仔细地检查您的变量并找出您需要哪些值。

于 2013-04-15T18:35:04.470 回答