C# GridView:Columns.Insert()会导致回发时数据消失,但Columns.Add()工作正常吗?
我有一个GridView,它有几个动态列(我不知道在设计时有多少个,可以是0-12列,因此需要动态列)。我有网格中的列和绑定到它们的数据-非常好用。还有其他标准的设计时TemplateField列,其中包含TextBox控件。这些值与用户可以编辑的值绑定。网格通过提交按钮发回 我的问题是“为什么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方法中为这些边界字段赋
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++;
}
}