2009-10-06 48 views
2

我有一個頁面一個gridview,它有一個模板字段:ASP.NET GridView的文本框問題

 <asp:TemplateField> 
      <ItemTemplate> 
       <asp:TextBox ID="txtReturn" runat="server" Text="0"></asp:TextBox> 
      </ItemTemplate> 
     </asp:TemplateField> 

而且我寫了一些代碼在命令按鈕單擊事件讀取該文本框的TextValue:

int i = 0; 
     foreach (GridViewRow row in grdFactor.Rows) 
     { 
      TextBox txt = (TextBox)(row.FindControl("txtReturn")); 
      int ret = 0; 
      try 
      { 
       ret = Int32.Parse(txt.Text); 
       if (ret > 0 && ret < factor.Orders[i].Entity) 
       { 
        factor.Orders[i].updateReturn(ret); 
       } 
      } 
      catch (Exception ex) { } 

      i++; 
     } 

但txt.Text的值始終爲零。 你能幫我嗎? 謝謝。

回答

1

你什麼時候在Grid或Page上調用DataBind()?通常開發人員會將數據綁定兩次,並覆蓋從Request.Form接收的數據。

一定要檢查Page.IsPostBack布爾值。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     this.myGrid.DataSource = list; 
     this.myGrid.DataBind(); 
    } 
}