日期:2014-05-18  浏览次数:20575 次

asp.net中怎么取出嵌套在datagrid里面的textbox的值
最近毕业设计用asp.net(c#)弄个网站,现在出现了个问题忙活了1天多了还没有解决,在这里问问大侠们

我现在在一个页面上拖了个datagrid,在最后一列的模板列里面嵌套了一个textbox,在datagrid外面想用一个button的单击时间,调用这个textbox里面用户输入的数据,但是现在都调用不出来,试过挺多网上说的方法了,但是都不行,专门用了个Label试着显示看看,但是发现调出来的值都是空,到底怎么样才能真正调用这个textbox里面用户输入的值呢?

<asp:TemplateColumn   HeaderText= "选择题量 ">
        <HeaderStyle   Width= "160px "> </HeaderStyle>
            <ItemTemplate>
                        <asp:TextBox   id= "QNum "   Width= "60 "   Runat= "server "> </asp:TextBox>
                            <asp:RangeValidator   id=RVQNum   runat= "server "   Font-Size= "Smaller "   MinimumValue= "0 "   MaximumValue= ' <%#   Convert.ToInt32(DataBinder.Eval   (Container.DataItem, "QuesTotal "))%> '   ErrorMessage= "* "   ControlToValidate= "QNum "> </asp:RangeValidator>
            </ItemTemplate>
</asp:TemplateColumn>


foreach(System.Web.UI.WebControls.DataGridItem   dl   in   this.QuesKindDataGrid   .Items)
{
        TextBox   a   =   (TextBox)dl.FindControl( "QNum ");
        Label2.Text=   a.Text   ;
}

相关的两部分代码是这样的,帮我看看我到底那里弄出了

------解决方案--------------------
试一下这个:

for (int i = 0;i <this.DataGrid.Items.Count;i++)
{
string value = ((TextBox)this.DataGrid.Items[i].FindControl( "QNum ")).Text;

}

------解决方案--------------------
DataGrid.Items[i].Cells[*].FindControl
------解决方案--------------------
TextBox a = (TextBox)(dl.FindControl( "QNum "));
试试
------解决方案--------------------
刚想了一下

应该是
foreach循环到最后一个datagrid的TextBox的值为空 所以最后得到的也是空

LZ试一下在datagrid里的最后一个TextBox里面输值 看看能不能得到数据?
------解决方案--------------------
可能点击button的时候,又执行了grd_ItemDatabound()事件了
------解决方案--------------------
初始绑定数据的时候应该这样
void Page_Load(object sender, EventArgs e) {
if(!IsPostBack) { // 确保只在第一次加载页面绑定,否你点击button的时候又绑定会覆盖客户端输入的数据
// 执行绑定代码
}
}

Good Luck!