Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# GridView:Columns.Insert()会导致回发时数据消失,但Columns.Add()工作正常吗?_C#_Asp.net_Gridview_Dynamic_Postback - Fatal编程技术网

C# GridView:Columns.Insert()会导致回发时数据消失,但Columns.Add()工作正常吗?

C# GridView:Columns.Insert()会导致回发时数据消失,但Columns.Add()工作正常吗?,c#,asp.net,gridview,dynamic,postback,C#,Asp.net,Gridview,Dynamic,Postback,我有一个GridView,它有几个动态列(我不知道在设计时有多少个,可以是0-12列,因此需要动态列)。我有网格中的列和绑定到它们的数据-非常好用。还有其他标准的设计时TemplateField列,其中包含TextBox控件。这些值与用户可以编辑的值绑定。网格通过提交按钮发回 我的问题是“为什么gv.Columns.Insert()会导致我所有的TextBox数据在回发时都为空,但是gv.Columns.Add()的工作方式很好?” 然后我继续在_RowDataBound方法中为这些边界字段赋

我有一个GridView,它有几个动态列(我不知道在设计时有多少个,可以是0-12列,因此需要动态列)。我有网格中的列和绑定到它们的数据-非常好用。还有其他标准的设计时TemplateField列,其中包含TextBox控件。这些值与用户可以编辑的值绑定。网格通过提交按钮发回

我的问题是“为什么
gv.Columns.Insert()
会导致我所有的
TextBox
数据在回发时都为空,但是
gv.Columns.Add()
的工作方式很好?”

然后我继续在_RowDataBound方法中为这些边界字段赋值,所有这些都非常有效。然而,当我发回并尝试引用一些文本框时,它们都是空的。是的,我在加载页面的if
(!IsPostBack)
中包装了
BuildColumns()
调用


当然,我想使用
.Insert()
,这样列就可以进入正确的位置,而不是列数组的末尾。

无法修复的Visual Studio错误:


了解更多信息。

哦,快点。没有感受到爱!
protected void BuildColumns()
{
    // The first column to begin to insert the columns in the GridView
    int columnIndex = 5;

    BoundField aoColumn = new BoundField();
    aoColumn.HeaderText = "New Column 1";
    gvMyGrid.Columns.Insert(columnIndex, aoColumn); // kills txtQuantity.Text on postback
    gvMyGrid.Columns.Add(aoColumn);                 // works fine
    columnIndex++;

    foreach (MyEntity my in _myEntityCollection)
    {
        BoundField myColumn = new BoundField();
        myColumn.HeaderText = String.Format("{0:d}", my.StartDate);
        gvMyGrid.Columns.Insert(columnIndex, myColumn);
        columnIndex++;
    }
}