我试图在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"
/>
答案 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。假设上面的代码为伪代码