【问题标题】:How to retrieve textbox value in gridview when happen indexchanging event in asp.net?在 asp.net 中发生 indexchange 事件时,如何在 gridview 中检索文本框值?
【发布时间】:2016-02-06 07:57:54
【问题描述】:

我有一个绑定到 ObjectDataSource 的 GridView。我向网格中的每一行添加了一个文本框和一个按钮,以允许用户输入日期并单击按钮进行订阅。 GridView 中不存在此文本框的字段,并且在运行此页面时返回空引用。 我该怎么办?请帮忙.. 这是 ASPX 文件和背后的代码:

<asp:TemplateField HeaderText="content" ItemStyle-Width="150"> <ItemTemplate> <asp:TextBox ID="Name" runat="server" /> </ItemTemplate> <ItemStyle Width="150px"></ItemStyle> </asp:TemplateField> <asp:ButtonField CommandName="Select" Text="save" ButtonType="Button" />

代码隐藏:

 protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
    GridViewRow row = GridView1.Rows[e.NewSelectedIndex];

    string s = row.Cells[0].Text;
            //Fetch value of Name.

    TextBox tb = (TextBox)GridView1.FindControl("Name");
    string name = tb.Text;
}

name 的值为 null...

【问题讨论】:

    标签: asp.net gridview


    【解决方案1】:

    GridViewRow 也有FindControl 方法。你可以试试,

    protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    {
        GridViewRow row = GridView1.Rows[e.NewSelectedIndex];
        TextBox tb = row.FindControl("Name") as TextBox;
        String name = tb.Text;
    }
    

    【讨论】:

      【解决方案2】:

      您也可以在行命令事件中执行此操作。试试这个..

      添加OnRowCommand="gvProducts_RowCommand" 然后在后面的代码中

      protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
          {
           if (e.CommandName.Equals("Select"))
              {
               GridViewRow row = GridView1.Rows[e.RowIndex];
               TextBox tb = (TextBox)row.FindControl("Name");
               string name = tb.Text;
               }
           }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-22
        相关资源
        最近更新 更多