[ASP.NET][Telerik] 使用 CommandArgument 由前端取得 RadGrid 的某一欄位資料
情境:
在 RadGrid 的某一列按下按鈕,然後取得那一列的某一欄位的資料,如下圖
問題:
按下按鈕後無法得知哪一列的按鈕被按下
RadGrid 有堤供 get_selectedItems(),可以讓我知道哪一列被選擇,但這要先在畫面點一下才能拿的到資料,這並不符合我的使用情境
var grid = $find("<%= RadGrid1.ClientID %>"); var masterTableView = grid.get_masterTableView(); var orderId = masterTableView.get_selectedItems()[0].getDataKeyValue("OrderID"); var orderid = masterTableView.getCellByColumnUniqueName(masterTableView.get_selectedItems()[0], "OrderID").innerHTML; console.log(orderid); console.log(orderId); return orderId; }try 了好久,都找不到可以由前端直接拿到 RowIndex 的方法
PS.後端可以
解法:
使用 CommandArgument
@.aspx
<HeaderStyle Width="2%"></HeaderStyle> <ItemStyle CssClass="tac" /> <ItemTemplate> <telerik:RadButton ID="ReadRecord_RadButton" runat="server" ToolTip="讀取" CssClass="ReadCommand" CommandName="ReadCommand" OnClientClicking="ReadCommand" CommandArgument='<%# Item.OrderID +","+ Item.CustomerID %>'> <Image EnableImageButton="true" /> </telerik:RadButton> </ItemTemplate> </telerik:GridTemplateColumn>
@javascript
前端透過 args._commandArgument 屬性拿到按鈕傳來的參數
var orderid = GetSelectOrderId(); var orderId = args._commandArgument; var msg = String.format("確定讀取:{0}?", orderId); RadControlOfConfirmation(sender, args, msg, "提示"); }
@cs
後端也能收到前端傳來的參數
{ switch (e.CommandName) { case "ReadCommand": var args = e.CommandArgument; var msg = string.Format("朕知道,你傳了參數:{0} 了", args); this.RadAjaxManager1.Alert(msg); break; } }
完整前端程式碼
完整後端程式碼
本文出自:http://www.dotblogs.com.tw/yc421206/archive/2015/08/20/153177.aspx
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET