在單擊 GridView 控件中的按鈕時(shí),將引發(fā) RowCommand 事件。 GridView 控件具有內(nèi)置功能,用于進(jìn)行編輯、刪除和分頁(yè)等操作。 還可以添加按鈕并使用 RowCommand 事件向控件添加自定義功能。
可以通過下面的方式向 GridView 控件添加自定義功能:
向 GridView 控件添加 ButtonField 字段。
向 GridView 控件中的模板添加 Button、LinkButton 或 ImageButton 控件。
可以使用事件參數(shù)的 CommandName 屬性在事件處理程序方法中標(biāo)識(shí)按鈕的功能。 如果使用的是 ButtonField 或 TemplateField 對(duì)象,則還可以使用 CommandArgument 屬性來標(biāo)識(shí)當(dāng)前行。 使用的是 ButtonField 對(duì)象時(shí),CommandArgument 屬性自動(dòng)設(shè)置為行索引。 使用的是 TemplateField 對(duì)象時(shí),控件不會(huì)自動(dòng)設(shè)置 CommandArgument 屬性。 在這種情況下,如果必須在事件處理程序中確定行索引,則可以使用數(shù)據(jù)綁定表達(dá)式將該按鈕的 CommandArgument 屬性設(shè)置為行索引。
將按鈕的 CommandName 屬性設(shè)置為標(biāo)識(shí)其功能的字符串,如“打印”或“復(fù)制”。
如果使用的是 TemplateField 對(duì)象并且必須在事件處理程序方法中訪問行索引,則將按鈕的 CommandArgument 屬性設(shè)置為標(biāo)識(shí)當(dāng)前行的表達(dá)式。
下面的示例演示如何將 TemplateField 列中某個(gè)按鈕的 CommandArgument 屬性設(shè)置為當(dāng)前行索引。 在該示例中,該列包含一個(gè)顯示購(gòu)物車的 Button 控件。
<asp:TemplateField> <ItemTemplate> <asp:Button ID="AddButton" runat="server" CommandName="AddToCart" CommandArgument="<%# CType(Container,GridViewRow).RowIndex %>" Text="Add to Cart" /> </ItemTemplate> </asp:TemplateField>
為 GridView 控件的 RowCommand 事件創(chuàng)建一個(gè)方法。 在該方法中,執(zhí)行下列操作:
檢查事件參數(shù)對(duì)象的 CommandName 屬性來查看傳入什么字符串。
如果需要,使用 CommandArgument 屬性檢索包含該按鈕的行的索引。
為用戶單擊的按鈕執(zhí)行相應(yīng)的邏輯。
下面的示例演示響應(yīng) GridView 控件中的按鈕單擊的方法。 在該示例中,TemplateField 列中的按鈕發(fā)送命令“AddToCart”。 RowCommand 事件處理程序確定被單擊的按鈕。 如果被單擊的是購(gòu)物車按鈕,則代碼執(zhí)行相應(yīng)的邏輯。
Protected 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 IfEnd Sub
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. } }
聯(lián)系客服