如何将值插入gridview行? ASP.NET,C#

时间:2016-04-12 16:35:58

标签: c# asp.net gridview

我的问题是我如何在gridviews行中插入值。基本上我创建了一个gridview,其中我绑定了页脚,我想在页脚中插入值。我创建了一个'文本框', '下拉列表'和'复选框'。我希望当我插入值并按"插入"按钮然后在gridview中显示值,然后我再次插入值并按下按钮,然后在gridview中显示插入的值。这是我的gridview图像image

我也想编辑和删除行。这是我的代码: aspx代码

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        Height="104px" ShowFooter="True" Width="463px" 
        AutoGenerateDeleteButton="True" AutoGenerateEditButton="True">
        <Columns>
            <asp:TemplateField HeaderText="Column Name">
            <FooterTemplate>
             <asp:TextBox ID="name" runat="server"></asp:TextBox>
             </FooterTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Data Type">
            <FooterTemplate>
                <asp:DropDownList ID="DropDownList2" runat="server">
                </asp:DropDownList>
             </FooterTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Allow Null">
            <FooterTemplate>
                <asp:CheckBox ID="allow_null" runat="server" />
            </FooterTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Primary Key">
            <FooterTemplate>
                <asp:CheckBox ID="primary" runat="server" />
            </FooterTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

这是我的aspx.cs代码:

protected void Button1_Click(object sender, EventArgs e)
{
    string name = TextBox1.Text;
    string type = DropDownList1.Text;
    string allow=Null.Text;
    string primary = Primary.Text;
    name = ((TextBox)GridView1.FooterRow.FindControl("TextBox2")).Text;
    type = ((DropDownList)GridView1.FooterRow.FindControl("DropDownList2")).Text;
    allow = ((CheckBox)GridView1.FooterRow.FindControl("allow_null")).Text;
    primary = ((CheckBox)GridView1.FooterRow.FindControl("primary")).Text; 
}

1 个答案:

答案 0 :(得分:0)

如果这有助于这是基于ASPSnippets,但修改为更像您可能需要。请注意,我使用的是List,而不是使用DataTable,其中“Row”是一个类。您使用的是个人偏好。 “Row”类是:

[Serializable]
public class Row
{
    public string FieldName { get; set; }
    public string FieldType { get; set; }
    public Boolean FieldNullible { get; set; }
    public Boolean FieldPrimaryKey { get; set; }
}

我的名字与你的名字不同。请注意,ASPSnippets示例不使用TemplateFields,所以我不是。我不确定你是否需要“允许” 和/或“primary”字段布尔值,所以我没有在表单中处理它们。所以ASP.Net表格是:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
    Height="104px" Width="463px"
    AutoGenerateDeleteButton="True" AutoGenerateEditButton="True">
    <Columns>
        <asp:BoundField DataField="FieldName" HeaderText="Name" ItemStyle-Width="120" />
        <asp:BoundField DataField="FieldType" HeaderText="Type" ItemStyle-Width="120" />
    </Columns>
</asp:GridView>
<br /><asp:Label ID="Label1" runat="server" Text="Name:"></asp:Label>
<br /><asp:TextBox ID="txtName" runat="server" />
<br /><asp:Label ID="Label2" runat="server" Text="Type:"></asp:Label>
<br /><asp:TextBox ID="txtType" runat="server" />
<br /><asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="Insert" />

代码隐藏是:

protected void Page_Load(object sender, EventArgs e)
{
    if (this.IsPostBack)
        return;
    List<Row> Rows = new List<Row>();
    ViewState["Rows"] = Rows;
    BindGrid();
}

protected void BindGrid()
{
    GridView1.DataSource = (List<Row>)ViewState["Rows"];
    GridView1.DataBind();
}

protected void Insert(object sender, EventArgs e)
    {
        List<Row> Rows = (List < Row >)ViewState["Rows"];
        Row r = new Row();
        r.FieldName = txtName.Text.Trim();
        r.FieldType = txtType.Text.Trim();
        Rows.Add(r);
        ViewState["Rows"] = Rows;
        BindGrid();
        txtName.Text = string.Empty;
        txtType.Text = string.Empty;
}

我不喜欢的一件事是GridView直到有数据才会显示。我想你可以解决这个问题。

这不会实现编辑和删除。