【发布时间】:2014-10-31 18:47:11
【问题描述】:
当我在 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 中添加了 texboxes...你可以想象一个矩阵... 没有问题... 但是当我像这样访问它们时:
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.
我该如何解决这个问题?
【问题讨论】:
-
你为什么不使用 textboxarray 来访问文本框?你创建了数组,为什么不继续引用呢?
-
什么是
idm???idm的初始值和最后值是什么??? -
使用
string.isnullorempty来检查,如果你有空字符串,并且你像!= null那样做一个空检查,它会通过,但是那个时候Convert.ToInt32("")会说Object reference not set to an instance of an object.
标签: c# asp.net gridview findcontrol