我有一个显示某些文件的详细信息的网格视图。它有 5 列,包括一个包含复选框的模板字段。
从后面的代码 OnInit 中,我添加了一些列以获取其他信息,这些信息可能需要也可能不需要,具体取决于页面。代码如下:
for (int i = 0; i < models.Length && i < 3; i++)
{
var model = models[i];
//Add gridview rows
BoundField bf = new BoundField();
bf.DataField = "Attribute" + i;
bf.HeaderText = model.AttributeName;
bf.Visible = true;
gvFiles.Columns.Insert(6 + i, bf);
}
这很好用,我得到了列。在 OnLoad 事件中,我将某些数据数据绑定到 gridview,并且效果也很好。
当回发发生时,问题就出现了。每当页面创建回发时,它都会执行 OnInit,然后崩溃并显示以下('on page')错误消息:
发生错误,因为无法找到 ID 为“ctl00$MainContent$gvFiles$ctl02$ctl00”的控件,或者在回发后将不同的控件分配给相同的 ID。如果未分配 ID,请显式设置引发回发事件的控件的 ID 属性以避免此错误。
我将导致问题的控件标识为 TemplateField 中的复选框,并给了它一个 ID。但是现在,在回发时会发生以下情况:
TemplateFieldss 中的复选框未出现
其中一列是 ImageField,它失去了它的“控制样式宽度/高度”参数,我得到了大量的图像。
该问题仅在回发时发生,并且删除以编程方式添加列的代码会使一切正常工作。
我怎样才能让它工作?