2014-05-16 167 views
0

我想讀取ASP.NET中我的項目的整個gridview的值。 我一直在嘗試和搜索相當一段時間,並沒有找到我要找的東西。從GridView中的文本框讀取值

這是我在aspx頁面的GridView:

<asp:GridView ID="GridViewNatuur" runat="server" AutoGenerateColumns="False"> 
       <Columns> 
        <asp:BoundField DataField="Naam" HeaderText="Mana" /> 
        <asp:TemplateField HeaderText="Aantal"> 
         <ItemTemplate> 
          <asp:TextBox ID="TextBox1" runat="server" TextMode="Number" AutoPostBack="False" MaxLength="100" Text="0"></asp:TextBox> 
                </ItemTemplate> 
        </asp:TemplateField> 
       </Columns> 
      </asp:GridView> 

它得到了時6行頁面加載值。對於這些行中的每一行,都會創建一個文本框。但是,所有這些文本框將具有相同的ID,這是不好的。我怎樣才能防止這一點?或者,如何讀取每行的文本框值?

BLNatuur blnatuur = new BLNatuur(); 
     List<Natuur> naturen = blnatuur.GetNaturen(); 
     BLManaCost blmanacost = new BLManaCost(); 
     int i = 0; 
     int aantal; 

     foreach (GridViewRow gridRow in GridViewNatuur.Rows) 
     { 
      ManaCost manaCost = new ManaCost(); 
      manaCost.KaartId = kaartInsertId; 
      manaCost.TypeId = naturen[i].ID; 
      string opgehaaldAantal = ((TextBox)GridViewNatuur.Rows[gridRow.RowIndex].Cells[1].FindControl("TextBox1")).Text; 
      bool correct = Int32.TryParse(opgehaaldAantal, out aantal); 
      if (!correct) 
      { 
       aantal = 0; 
      } 
      manaCost.Aantal = aantal; 
      i++; 
      blmanacost.InsertManaCost(manaCost); 
     } 

在我這裏貼的代碼中,變量我想要得到的字符串opgehaaldAantal權的一部分。

請注意,我還沒有在ASP.NET的經驗。

+0

我編輯了你的標題。請參閱「[應該在標題中是否包含」標籤「](http://meta.stackoverflow.com/questions/19190/)」,其中共識是「不,他們不應該」。 –

回答

1

只要改變從

string opgehaaldAantal = ((TextBox)GridViewNatuur.Rows[gridRow.RowIndex].Cells[1].FindControl("TextBox1")).Text; 

string opgehaaldAantal = ((TextBox)gridRow .FindControl("TextBox1")).Text; 
0

爲了讓所有的文本框的值,創建,讀取,因爲它是創建每個文本框,並將文字值到一個OnRowDataBound事件列表或類似的集合。

0

我解決了這個問題。 首先,我遇到了數字文本框仍然是數字時無法讀取數值的問題。所以我將它轉換爲後端的SingleLine文本框。

我還發現TextBox控件位於單元格控件數組的第二個點。 (第一個是細胞本身)。所以我不得不讀取該數組點來獲取TextBox。

BLNatuur blnatuur = new BLNatuur(); 
     List<Natuur> naturen = blnatuur.GetNaturen(); 
     BLManaCost blmanacost = new BLManaCost(); 
     int i = 0; 
     int aantal; 

     foreach (GridViewRow gridRow in GridViewNatuur.Rows) 
     { 
      ManaCost manaCost = new ManaCost(); 
      manaCost.KaartId = kaartInsertId; 
      manaCost.TypeId = naturen[i].ID; 

      TextBox textbox = (TextBox)gridRow.Cells[1].Controls[1]; 
      textbox.TextMode = TextBoxMode.SingleLine; 
      String opgehaaldAantal = textbox.Text; 

      bool correct = Int32.TryParse(opgehaaldAantal, out aantal); 
      if (!correct) 
      { 
       aantal = 0; 
      } 
      manaCost.Aantal = aantal; 
      i++; 
      blmanacost.InsertManaCost(manaCost); 
     } 

我想感謝那些研究它並幫助我找出問題的人。