2014-10-31 79 views
0

当我动态创建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,你能想象一个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

可能重复[什么是NullReferenceException,我该如何解决它?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-doi-i-fix-它) – 2014-10-31 18:49:07

+1

你为什么不使用textboxarray来访问文本框?您创建了该数组,为什么不参考它? – furkle 2014-10-31 18:51:41

+0

什么是'idm'? “idm”的初始值和最后值是什么? – 2014-10-31 18:52:49

回答

0

您必须控制的引用不会停止存在,您将它们添加到另一个控件。您已经创建了一个TextBoxes数组,并且您应该使用它来访问它们,而不是试图深入挖掘GridView,在您每次更改GridView时添加它们。当然,你将从TextBoxes的一维数组转换为GridView中的二维布局,所以你必须找到一些方法来确定两者之间的索引如何匹配。或者,更简单的是,您可以将textboxarray转换为二维数组,并使其与GridView中的布局完全一致。无论哪种方式,我认为这会比在GridView中糟糕的工作少得多。