添加行时GridView没有刷新:尝试Databind()

时间:2011-04-07 16:47:23

标签: c# linq linq-to-sql gridview

我的页面中有一个GridView但我没有通过GV添加我的行。添加文本框,然后将其显示给GV。现在的问题是,当我按下ADD按钮时,我的GV没有显示更新的行。如果我在菜单栏上单击该页面,那么我的整个页面将刷新,我可以看到我更新的GV。

以下是我的ADD_Click()事件的模拟:

    protected void btnAdd_Click(object sender, EventArgs e)
    {
                        var td = from s in cv.Test1
                                 join r in dt.Test2 on s.ID equals r.ID
                                 where s.Col1 == ColumnName
                                 select s;

                        gvShowComm.DataSource = td;
                        gvShowComm.DataBind();

                    }

                    catch (Exception err)
                    {
                        //Nothing!!!
                    }
            }

            else
            {
                MessageBox.Show("Please Enter Entry for the textboxes!");
            }
        }

现在,当我添加记录时,GridView没有显示更新的记录。谁能告诉我发生了什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

您应该验证的第一件事是您的td对象具有您期望的正确行数。 GridView应该正确绑定到该对象,因此我的预感是td中的结果缺少该行。

你如何“添加”这一行?您是先将其保存到数据库然后再运行linq调用吗?从上面的代码看起来就像你调用一些linq来获取结果,但没有任何东西显示你添加任何会导致结果与初始加载不同的东西。

你添加的伪代码应该是:

  1. 将新行保存到数据库
  2. 获取新数据
  3. 将新数据绑定到网格
  4. 您也可以通过提取旧数据手动执行此操作。在绑定之前手动将行添加到旧数据(存储在示例中的td中),然后在手动向linq结果添加行之后执行绑定。