在Gridview中插入命令

时间:2014-02-13 01:52:18

标签: asp.net gridview

我试图在C#语句“.Insert()”中使用asp:SqlDataSource InsertCommand来执行“INSERT INTO”命令。

Button,“btninsert”,位于gridview的标题字段中,插入文本框也是如此:“TextBoxHeadercol1”,“TextBoxHeadercol2”和“TextBoxHeadercol3”。

我的表中有4列“test”,它们是“idt”,“col1”,“col2”,“col3”。我的Gridview是“gvtotal”。

我知道col1,col2和col3不会打印任何数据,因为我遗漏了带有标签的ItemTemplate。

public void btninsert_Click(object sender, EventArgs e)
    {
        SqlDataSource1.InsertParameters["col1"].DefaultValue = ((TextBox)gvtotal.HeaderRow.FindControl("TextBoxHeadercol1")).Text;
        SqlDataSource1.InsertParameters["col2"].DefaultValue = ((TextBox)gvtotal.HeaderRow.FindControl("TextBoxHeadercol2")).Text;
        SqlDataSource1.InsertParameters["col3"].DefaultValue = ((TextBox)gvtotal.HeaderRow.FindControl("TextBoxHeadercol3")).Text;
        SqlDataSource1.Insert();
    }
<asp:GridView ID="gvtotal"
    runat="server"
    DataSourceID="SqlDataSource1"
    AutoGenerateColumns="False"
    DataKeyNames="idt">
    <Columns>
        <asp:BoundField DataField="idt" HeaderText="idt" Readonly="true" SortExpression="idt" />
        <asp:TemplateField SortExpression="col1">
            <HeaderTemplate>
                <asp:TextBox ID="TextBoxHeadercol1" text="col1" runat="server" MaxLength="40" />
            </HeaderTemplate>
       </asp:TemplateField>
        <asp:TemplateField SortExpression="col2">
            <HeaderTemplate>
                <asp:TextBox ID="TextBoxHeadercol2" text="col2" runat="server" MaxLength="40" />
            </HeaderTemplate>
        </asp:TemplateField>
        <asp:TemplateField SortExpression="col3">
            <HeaderTemplate>
                <asp:TextBox ID="TextBoxHeadercol3" text="col3" runat="server" MaxLength="40" />
            </HeaderTemplate>
        </asp:TemplateField>
        <asp:TemplateField>
            <HeaderTemplate>
                <asp:Button ID="btninsert" runat="server" Text="Insert Into" OnClick="btninsert_Click" />
            </HeaderTemplate>
       </asp:TemplateField>
    </Columns>
</asp:GridView>
<asp:SqlDataSource
    id="SqlDataSource1"
    ConnectionString="<%$ ConnectionStrings:connone %>"
    SelectCommand="SELECT * FROM [test];"
    InsertCommand="INSERT INTO [test] [col1],[col2],[col3] VALUES @col1,@col2,@col3;"
    runat="server"
 />

1 个答案:

答案 0 :(得分:0)

我认为你可以通过使用SQLDataSource提供的InsertCommand模板来解决这个问题。为SQLDataSource编写此命令

InsertCommand =“INSERT INTO Test(...。)VALUES(@ val1,@ val2,@ val3)

使用SQLDataSource模板将@ val1,@ val2和@ val3映射到所需的文本框。提供的快速模板将有助于此。在Insert的click事件中,只需刷新网格视图视图即可显示新内容

public void btninsert_Click(object sender, EventArgs e)
{
    gridview.DataBind();
}

请注意,我的计算机上没有Visul Studio。假设上面的代码为伪代码