如何从ASP gridview页脚获取所有值

时间:2017-09-01 18:16:46

标签: c# asp.net gridview

我整天都在和这个问题作斗争。我有一个asp:Gridview有几个页脚模板,有几个TextBox字段,一个DropDown和一个CheckBox。我隐藏页脚,直到单击添加记录asp:button。一切正常,我可以在文本框中输入数据,从下拉菜单中选择选举并循环复选框。现在,当我尝试将数据保存到数据库时,我使用此代码。

protected void MembersGridView_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName.Equals("EmptyInsert"))
    {

    }

    if (e.CommandName.Equals("Insert"))
    {

        int Role =Convert.ToInt32((MembersGridView.FooterRow.FindControl("ddlRole") as DropDownList).SelectedItem.Value);
        string FirstName = (MembersGridView.FooterRow.FindControl("txtLastName") as TextBox).Text;
        string LastName = (MembersGridView.FooterRow.FindControl("txtLastName") as TextBox).Text;
        TextBox UserName = MembersGridView.FooterRow.FindControl("txtUserName") as TextBox;
        TextBox Email = MembersGridView.FooterRow.FindControl("txtEmail") as TextBox;
        CheckBox active = MembersGridView.FooterRow.FindControl("chkActive") as CheckBox;
        DbContext.AAHMembersAdd(Role, FirstName, LastName, UserName.Text, Email.Text, active.Checked);

        //MembersGridView.EditIndex = -1;

        MembersGridView.DataSource = DbContext.VW_Members.ToList(); 
        DataBind();
    }
}

<asp:TemplateField HeaderText="First Name" ItemStyle-Width="100">
   <ItemTemplate>
        <asp:Label ID="lblFirstName" runat="server" Text='<%# Eval("firstname")%>'></asp:Label>
   </ItemTemplate>
   <EditItemTemplate>
        <asp:TextBox ID="txtFirstName" runat="server" Text='<%# Eval("firstname")%>'></asp:TextBox>
   </EditItemTemplate>
   <FooterTemplate>
       <asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox>
   </FooterTemplate>
</asp:TemplateField>

我已经为其中一个模板字段添加了aspx,除了下拉菜单和CheckBox

外,它们都与此相同

返回DropDown和CheckBox数据,但我的所有TextBox值都以空字符串形式返回。我在这里想念的是什么正如你所看到的,我已经尝试了几种不同的方法,但结果是一样的。

1 个答案:

答案 0 :(得分:0)

从我所看到的;您没有将文本设置为任何内容 - 因此textbox.text值是一个空字符串。尝试更改此代码:

<FooterTemplate> <asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox> </FooterTemplate>

到此:

<FooterTemplate> <asp:TextBox ID="txtFirstName" text="hello" runat="server"></asp:TextBox> </FooterTemplate>

也改变了这个:

string FirstName = (MembersGridView.FooterRow.FindControl("txtLastName") as TextBox).Text;

到此:

 string FirstName = (MembersGridView.FooterRow.FindControl("txtFirstName") as TextBox).Text;
相关问题