2009-10-06 2 views
2

У меня есть GridView на странице и есть поле шаблона:ASP.NET GridView TextBox Проблема

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

И я написал код в командной кнопке Click Event читать 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

Когда вы вызываете DataBind() на сетке или странице? Часто разработчики дважды связывают данные и переопределяют данные, полученные из Request.Form.

Обязательно проверьте значение Page.IsPostBack boolean.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     this.myGrid.DataSource = list; 
     this.myGrid.DataBind(); 
    } 
} 
Смежные вопросы