问个问题。我在DataGrid中,绑定了数据。但是,DataGrid在编辑的时候,TextBox无法获取新的数据。不知道是什么原因。请大家帮帮忙。具体代码如下。
<ItemTemplate>
    <asp:Label id=Label6 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.数量") %>'>
    </asp:Label>
</ItemTemplate>
<EditItemTemplate>
    <asp:TextBox id=TextBox1 runat="server" Width="40px" Height="22px" Text='<%# DataBinder.Eval(Container, "DataItem.数量") %>'>
    </asp:TextBox>
</EditItemTemplate>
以上是html脚本。刚开始页面现实Label控件,当处于编辑状态时,是TextBox控件。这是,我需要获得客户端在TextBox中数据的数据。但是无法获取。
下面是代码
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
  TextBox textBox1 = (TextBox)e.Item.FindControl("TextBox1");
  Response.Write(textBox1.Text);
}
这是代码,无法获取新的值。
我用DataGrid1.FindControls("TextBox1");出现错误,原因是找不到TextBox1,谁能给我解释一下为什么找不到这个TextBox1这个控件。

解决方案 »

  1.   

    代码没错啊.
    1.试一下,将
    <asp:TextBox id=TextBox1 runat="server" Width="40px" Height="22px" Text='<%# DataBinder.Eval(Container, "DataItem.数量") %>'>
        </asp:TextBox>改为:
    <asp:TextBox id="TextBox1" runat="server" Width="40px" Height="22px" Text='<%# DataBinder.Eval(Container, "DataItem.数量") %>'>
        </asp:TextBox>
    2.如果1还不行的话.试一下下面的.
    你是用的DataGrid的命令按钮吗?  
    就是: “编辑” "更新" "取消" 列.
    这样的话才能找得到,如果你不是用的这列.请这样查询:
    private void DataGrid1_ItemCommand(object source,             System.Web.UI.WebControls.DataGridCommandEventArgs e)    //要在ItemCommand中写
    {
      if(e.Item.ItemType == ListItemType.Edit)  //你出错原因可能是在这儿,
      {                                         //它可以到Head模板中找TextBox1去了.
        TextBox textBox1 = (TextBox)e.Item.FindControl("TextBox1");
        Response.Write(textBox1.Text);
      }
    }
      

  2.   

    改一下:Sorry: 掉了一句,这样:
    请这样查询:
    private void DataGrid1_ItemCommand(object source,             System.Web.UI.WebControls.DataGridCommandEventArgs e)    //要在ItemCommand中写
    {
      if(e.CommandName == "update")       //你的按钮命令名为"update"
      {
        if(e.Item.ItemType == ListItemType.Edit)  //你出错原因可能是在这儿,
        {                                         //它可以到Head模板中找TextBox1去了.
          TextBox textBox1 = (TextBox)e.Item.FindControl("TextBox1");
          Response.Write(textBox1.Text);
        }
      }
    }
      

  3.   

    findcontrol不行
    试验下用controls[0]了?
      

  4.   

    學習一下,我一直不知道怎樣傳值給textbox
      

  5.   

    想順便問一下,DataGrid裏的數據如何傳值給textbox?我公司的方法封裝了,我看不到。
      

  6.   

    问题不在这里
    1。你检查下你的绑定方式 :用ItemCreated 还是用ItemDataBound(有区别的)
    2。看下你获得取ID的方式
    3。总之问题不在这里
      

  7.   

    <asp:TextBox id=dcValue runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "dcValue") %>'>
    </asp:TextBox>
    TextBox textBox;
    for (int i = 0; i < this.DataGrid.Items.Count; i++)
    {
    textBox = (TextBox)this.DataGrid.Items[i].FindControl("dcValue");
    获得值=DataGrid.Items[i].Cells[6].Text;
    }
      

  8.   

    你要把textbox的名称传进去,我上面textbox的名字是dcValue