【发布时间】:2014-04-03 04:48:23
【问题描述】:
我正在尝试在 HeaderRow 中执行“INSERT INTO”。
HeaderRow 中的按钮不会触发 RowCommand。
gridview 包含 5 列:idt、datetime、col1、col2 和 col3。
Protected Sub gvtest_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) Handles gvtest.RowCommand
Dim txt1, txt2, txt3 as String
If e.CommandName = "insertinto" Then
Try
txt1 = DirectCast(gvtest.HeaderRow.FindControl("tbins1"), TextBox).Text
txt2 = DirectCast(gvtest.HeaderRow.FindControl("tbins2"), TextBox).Text
txt3 = DirectCast(gvtest.HeaderRow.FindControl("tbins3"), TextBox).Text
sqltest.InsertParameters("@datetime").DefaultValue = DateTime.Now()
sqltest.InsertParameters("@col1").DefaultValue = txt1
sqltest.InsertParameters("@col2").DefaultValue = txt2
sqltest.InsertParameters("@col3").DefaultValue = txt3
sqltest.Insert()
Catch ex As Exception
TextBox1.Text = "Insert: " & ex.Message
End Try
gvtest.DataBind()
End If
End Sub
default.aspx
<asp:GridView ID="gvtest"
runat="server"
DataSourceID="sqltest"
AutoGenerateColumns="False"
DataKeyNames="idt"
OnRowCommand="gvtest_RowCommand">
<Columns>
<asp:BoundField DataField="idt" HeaderText="idt" Readonly="true" SortExpression="idt" />
<asp:BoundField DataField="datetime" HeaderText="datetime" SortExpression="datetime" />
<asp:TemplateField SortExpression="col1">
<HeaderTemplate>
<asp:TextBox ID="tbins1" text="col1" runat="server" MaxLength="40" />
</HeaderTemplate>
</asp:TemplateField>
<asp:TemplateField SortExpression="col2">
<HeaderTemplate>
<asp:TextBox ID="tbins2" text="col2" runat="server" MaxLength="40" />
</HeaderTemplate>
</asp:TemplateField>
<asp:TemplateField SortExpression="col3">
<HeaderTemplate>
<asp:TextBox ID="tbins3" text="col3" runat="server" MaxLength="40" />
</HeaderTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<asp:Button ID="btnins" CommandName="insertinto" runat="server" Text="Insert Into" OnClick="btnins_Click" />
</HeaderTemplate>
</asp:GridView>
<asp:SqlDataSource
id="sqltest"
ConnectionString="<%$ ConnectionStrings:connone %>"
SelectCommand="SELECT * FROM [test];
InsertCommand="INSERT INTO [test] datetime,col1,col2,col3 VALUES @datetime,@col1,@col2,@col3;">
</asp:SqlDataSource>
为简洁起见,省略了包含 gridview 数据的文本框。
【问题讨论】:
标签: asp.net gridview insert-into