Asp.net网格视图模板字段中的数据依然存在

问题描述 投票:0回答:1

我有一个包含4个模板字段,每个包含文本框的网格图。

现在,我已经绑定了数据源,这些模板字段。当我在文本框中键入一些数据的用户类型,然后单击保存按钮(一个按钮,这是不是GridView中的一部分,但个别人在网络表单),我没能获得在单击事件处理程序的值在代码隐藏文件。请帮我。

ASPX文件

<asp:TemplateField HeaderText="col1"> 
    <ControlStyle Height="25px" Width="60px" />
      <ItemTemplate>
            <asp:TextBox ID="txt1" runat="server" Text='<%# Bind("[col1]") %>'>   
            </asp:TextBox>                 
      </ItemTemplate>
  </asp:TemplateField>

<asp:TemplateField HeaderText="col2">  
  <ControlStyle Height="25px" Width="60px" />
    <ItemTemplate>
      <asp:TextBox ID="txt2" runat="server"  Text='<%# Bind("[col2]") %>'>  
      </asp:TextBox>
    </ItemTemplate>
 </asp:TemplateField>

<asp:TemplateField HeaderText="col3"> 
  <ControlStyle Height="25px" Width="60px" />
    <ItemTemplate>
      <asp:TextBox ID="txt3" runat="server"  Text='<%# Bind("[col3]") %>'>
      </asp:TextBox>
    </ItemTemplate>
 </asp:TemplateField>

<asp:TemplateField HeaderText="col4"> 
  <ControlStyle Height="25px" Width="60px" />
    <ItemTemplate>
      <asp:TextBox ID="txt4" runat="server"  Text='<%# Bind("[col4]") %>'>
      </asp:TextBox>
    </ItemTemplate>       
</asp:TemplateField>

隐藏文件的代码

protected void ButtonAdd_Click(object sender, EventArgs e)
{
    foreach (GridViewRow row in gvEdit.Rows)
    {
            string a = ((TextBox)row.FindControl("col1")).Text;
                 //above line gives a null value
    }
}
c# asp.net gridview templatefield
1个回答
1
投票

您通过GridViewRowCollection需要循环,然后对每一行,找到你给它的标记的Id控制。例如:

protected void ButtonAdd_Click(object sender, EventArgs e)
{
    foreach (GridViewRow row in gvEdit.Rows)
    {
        var txt1 = row.FindControl("txt1") as TextBox;
        var txt2 = row.FindControl("txt2") as TextBox;
        var txt3 = row.FindControl("txt3") as TextBox;
        var txt4 = row.FindControl("txt4") as TextBox;

        // access the Text property of each, e.g. txt1.Text
    }
}

更新:确保当你的数据源绑定,它只是发生在最初的负载,而不是随后的回传,否则你的变化将是,每次重置。

protected void Page_Load(object sender, EventArgs e) 
{
    if (!IsPostBack)
    {
        GridView1.DataSource = // data source
        GridView1.DataBind();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.