2014-10-31 83 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中糟糕的工作少得多。