0
我正在嘗試使用Gridview完成SQL「INSERT INTO」命令。使用Gridview完成SQL「INSERT INTO」命令並
我使用FindControl
捕獲到頁腳文本框: TextBox Tempcol1 = ((TextBox)GridView1.FooterRow.FindControl("TBInsertFootercol1"));
然後將其綁定到InsertParameter
在SqlDataSource1
:
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();
}
,問題是... – Dalorzo 2014-09-01 02:42:31
的 '@' 爲什麼它什麼也不做。它不會插入到我添加的值的另一行中。根本沒有錯誤陳述。 – noviscientia 2014-09-01 02:44:54
調試你的代碼,在'SqlDataSource1.Insert();'處放置斷點,並且在每次檢查'SqlDataSource1.InsertParameters'的值時,看看它們是否有價值,然後告訴我們,祝你好運 – Farrokh 2014-09-01 04:17:53