在单击 GridView 控件中的按钮时,将引发 RowCommand 事件。GridView 控件具有内置功能,用于进行编辑、删除和分页等操作。还可以添加按钮并使用 RowCommand 事件向控件添加自定义功能。
可以通过下面的方式向 GridView 控件添加自定义功能:
-
向 GridView 控件添加 ButtonField 控件。
-
向 GridView 控件中的模板添加 Button、LinkButton 或 ImageButton 控件。
可以使用事件参数的 CommandName 属性来标识按钮的功能。如果使用 ButtonField 或 TemplateField 控件,则还可以使用 CommandArgument 属性来标识当前行。如果使用 ButtonField 控件,则 CommandArgument 属性自动设置为行索引。如果使用 TemplateField 控件,则该控件不会自动设置 CommandArgument 属性。在这种情况下,如果必须在事件处理程序中确定行索引,则可以使用数据绑定表达式将该按钮的 CommandArgument 属性设置为行索引。
响应 GridView 控件中的按钮事件
-
将按钮的 CommandName 属性设置为标识其功能的字符串,如“打印”或“复制”。
-
如果使用 TemplateField 控件并且必须在事件处理程序方法中访问行索引,则将按钮的 CommandArgument 属性设置为标识当前行的表达式。
下面的示例演示如何将 TemplateField 列中某个按钮的 CommandArgument 属性设置为当前行索引。在该示例中,该列包含一个显示购物车的 Button 控件。
Visual Basic<asp:TemplateField> <ItemTemplate> <asp:Button ID="AddButton" runat="server" CommandName="AddToCart" CommandArgument="<%# CType(Container,GridViewRow).RowIndex %>" Text="Add to Cart" /> </ItemTemplate> </asp:TemplateField>
C#<asp:TemplateField> <ItemTemplate> <asp:Button ID="AddButton" runat="server" CommandName="AddToCart" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" Text="Add to Cart" /> </ItemTemplate> </asp:TemplateField>
-
为 GridView 控件的 RowCommand 事件创建一个方法。在该方法中,执行下列操作:
-
检查事件参数对象的 CommandName 属性来查看传入什么字符串。
-
如果需要,使用 CommandArgument 属性检索包含该按钮的行的索引。
-
为用户单击的按钮执行相应的逻辑。
下面的示例演示响应 GridView 控件中的按钮单击的方法。在该示例中,TemplateField 控件中的按钮发送命令“AddToCart”。RowCommand 事件处理程序确定被单击的按钮。如果被单击的是购物车按钮,则代码执行相应的逻辑。
Visual BasicProtected Sub GridView1_RowCommand(ByVal sender As Object, _ ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) If (e.CommandName = "AddToCart") Then ' Retrieve the row index stored in the CommandArgument property. Dim index As Integer = Convert.ToInt32(e.CommandArgument) ' Retrieve the row that contains the button ' from the Rows collection. Dim row As GridViewRow = GridView1.Rows(index) ' Add code here to add the item to the shopping cart. End If End Sub
C#protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "AddToCart") { // Retrieve the row index stored in the // CommandArgument property. int index = Convert.ToInt32(e.CommandArgument); // Retrieve the row that contains the button // from the Rows collection. GridViewRow row = GridView1.Rows[index]; // Add code here to add the item to the shopping cart. } }
有关使用 ButtonField 控件的示例,请参见 GridView..::.RowCommand 事件文档。
-