问个问题。我在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这个控件。
<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.试一下,将
<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);
}
}
请这样查询:
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);
}
}
}
试验下用controls[0]了?
1。你检查下你的绑定方式 :用ItemCreated 还是用ItemDataBound(有区别的)
2。看下你获得取ID的方式
3。总之问题不在这里
</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;
}