我正在尝试执行" INSERT INTO"在HeaderRow。
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数据的文本框。
答案 0 :(得分:0)
您需要使用已知的命令名称,例如Insert。它不会知道您的自定义命令名称。
变化:
<asp:Button ID="btnins" CommandName="insertinto" runat="server" Text="Insert Into" OnClick="btnins_Click" />
为:
<asp:Button ID="btnins" CommandName="Insert" runat="server" Text="Insert Into" OnClick="btnins_Click" />
答案 1 :(得分:0)
GridView行命令事件来自数据行上的Command控件。
您在GridView标题中放置了一个按钮,您需要处理btnins.Command
事件