【问题标题】:Complete a SQL "INSERT INTO" Command using Gridview and使用 Gridview 完成 SQL“INSERT INTO”命令,然后
【发布时间】:2014-09-01 12:12:40
【问题描述】:

我正在尝试使用 Gridview 完成 SQL“INSERT INTO”命令。

我正在使用FindControl 来捕获页脚上的文本框: TextBox Tempcol1 = ((TextBox)GridView1.FooterRow.FindControl("TBInsertFootercol1"));

然后绑定到SqlDataSource1中的InsertParameter

SqlDataSource1.InsertParameters["@col1"].DefaultValue = Tempcol1.Text;

然后发给SqlDataSource1:

SqlDataSource1.Insert();

aspx

 <asp:GridView ID="GridView1" 
    runat="server"
    DataSourceID="SqlDataSource1"
    AutoGenerateColumns="false"
    DataKeyNames="idt"
    showfooter="true">
    <Columns>
        <asp:BoundField DataField="idt" HeaderText="idt" Readonly="true" SortExpression="idt" />
        <asp:BoundField DataField="datetime" HeaderText="datetime" SortExpression="datetime" />
        <asp:TemplateField SortExpression="col1" HeaderText="col1">
                <ItemTemplate>
                    <asp:TextBox ID="txt1" runat="server" Text='<%# Bind("col1") %>' />
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:textbox id="col1TextBox" text='<%#Bind("col1")%>' runat="server" />
                </EditItemTemplate>
            <FooterTemplate>
                <asp:TextBox ID="TBInsertFootercol1" runat="server"></asp:TextBox>
            </FooterTemplate>
       </asp:TemplateField>
        <asp:TemplateField SortExpression="col2" HeaderText="col2">
                <ItemTemplate>
                    <asp:TextBox ID="txt2" runat="server" Text='<%# Bind("col2") %>' />
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:textbox id="col2TextBox" text='<%#Bind("col2")%>' runat="server" />
                </EditItemTemplate>
            <FooterTemplate>
                <asp:TextBox ID="TBInsertFootercol2" runat="server"></asp:TextBox>
            </FooterTemplate>
        </asp:TemplateField>
        <asp:TemplateField SortExpression="col3" HeaderText="col3">
                <ItemTemplate>
                    <asp:TextBox ID="txt3" runat="server" Text='<%# Bind("col3") %>' />
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:textbox id="col3TextBox" text='<%#Bind("col3")%>' runat="server" />
                </EditItemTemplate>
            <FooterTemplate>
                <asp:TextBox ID="TBInsertFootercol3" runat="server"></asp:TextBox>
            </FooterTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Row Total">
                <ItemTemplate>
                    <asp:TextBox ID="txtrowtot" BackColor="LightGreen" runat="server" />
                </ItemTemplate>
            <FooterTemplate>
                <asp:Button ID="btn_InsertInto" runat="server" Text="Insert Into" />
            </FooterTemplate>
        </asp:TemplateField>
    </Columns>    </asp:GridView>
<asp:SqlDataSource
    id="SqlDataSource1"
    ConnectionString="<%$ ConnectionStrings:Total %>"
    SelectCommand="SELECT * FROM [test];"
    InsertCommand="INSERT INTO [test] [datetime], [col1], [col2], [col3] VALUES @datetime, @col1, @col2, @col3;"
    runat="server">
    <InsertParameters>
        <asp:Parameter Name="datetime" Type="String" />
        <asp:Parameter Name="col1" Type="Int32" />
        <asp:Parameter Name="col2" Type="Int32" />
        <asp:Parameter Name="col3" Type="Int32" />
    </InsertParameters>
</asp:SqlDataSource>

aspx.cs

 public void btn_InsertInto(object sender, EventArgs e)
    {
        TextBox Tempcol1 = ((TextBox)GridView1.FooterRow.FindControl("TBInsertFootercol1"));
        TextBox Tempcol2 = ((TextBox)GridView1.FooterRow.FindControl("TBInsertFootercol2"));
        TextBox Tempcol3 = ((TextBox)GridView1.FooterRow.FindControl("TBInsertFootercol3"));
        SqlDataSource1.InsertParameters["@datetime"].DefaultValue = Convert.ToString(DateTime.Now);
        SqlDataSource1.InsertParameters["@col1"].DefaultValue = Tempcol1.Text;
        SqlDataSource1.InsertParameters["@col2"].DefaultValue = Tempcol2.Text;
        SqlDataSource1.InsertParameters["@col3"].DefaultValue = Tempcol3.Text;
        SqlDataSource1.Insert();
        GridView1.DataBind();
    }

【问题讨论】:

  • 问题是……
  • 为什么什么都不做。它不会插入到具有我添加的值的另一行。根本没有错误声明。
  • 调试你的代码,在SqlDataSource1.Insert();下断点,触发时检查SqlDataSource1.InsertParameters的值,看看有没有值,然后告诉我们,祝你好运

标签: asp.net gridview


【解决方案1】:

尝试从 InsertParamters 语句中删除“@”

SqlDataSource1.InsertParameters["datetime"].DefaultValue = Convert.ToString(DateTime.Now);
SqlDataSource1.InsertParameters["col1"].DefaultValue = Tempcol1.Text;
SqlDataSource1.InsertParameters["col2"].DefaultValue = Tempcol2.Text;
SqlDataSource1.InsertParameters["col3"].DefaultValue = Tempcol3.Text;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 2022-12-21
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    相关资源
    最近更新 更多