当我动态创建gridview中的无限文本框时,如何访问它们? 例如:
int uste_uzaklik = 30;
int nesne = ListBox1.Items.Count;
Array.Resize(ref textboxarray, nesne * nesne);
for (int str = 0; str < nesne; str++)
{
for (int stn = 0; stn < nesne; stn++)
{
textboxarray[idm] = new TextBox();
textboxarray[idm].Font.Bold = true;
textboxarray[idm].Font.Name = "Verdana";
textboxarray[idm].ID = idm.ToString();
textboxarray[idm].ToolTip = textboxarray[idm].ID;
GridView2.Rows[str].Cells[stn + 1].Controls.Add(textboxarray[idm]);
if (str == stn) textboxarray[idm].Enabled = false;
uste_uzaklik += 30;
idm++;
}
}
我在gridview中添加texbox ...你可以想象一个matris ...... 没有问题... 但当我这样访问它们时:
if (((TextBox)(GridView2.Rows[str].Cells[stn].FindControl(idm.ToString()))).Text != null)
{
matris[i, j] = Convert.ToInt32(GridView2.Rows[str].Cells[stn].Text);
}
发生错误
Object reference not set to an instance of an object.
我该如何解决这个问题?
答案 0 :(得分:0)
您必须控制的引用不会停止存在,您将它们添加到另一个控件。您已经创建了一个TextBoxes数组,您应该使用它来访问它们,而不是试图深入了解您每次想要更改它们时添加它们的GridView。
当然,你是从一个TextBoxes的一维数组转到GridView中的二维布局,所以你要么必须找到一些方法来确定两者之间的索引是如何匹配的。或者,更简单地说,您可以将textboxarray转换为二维数组,并使其与GridView中的布局完全匹配。无论哪种方式,我认为这比在GridView中捣乱要少得多。