在RadGrid客户端获取所选项目

时间:2014-06-09 17:01:13

标签: c# javascript telerik radgrid

我想获取RadGrid中所选复选框的值。 我有一个radgrid,文本框和一个按钮,如下所示:

this._RadAjaxPanel.Controls.Add(RadGrid1);
this._RadAjaxPanel.Controls.Add(TextBox1);
this._RadAjaxPanel.Controls.Add(Buton1);

radgrid id设置为RadGrid1和

Button1.OnClientClick = "GetSelectedItems("+ this._RadGrid1 +")";

点击按钮时会调用javascript,我想知道哪些行已被选中。 javascript函数如下,但它不正确:

 function GetSelectedItems(grid) {           
    var selectedRows = grid.get_selectedItems();
    for (var i = 0; i < selectedRows.length; i++) {
        var row = selectedRows[i];
        var cell = grid.getCellByColumnUniqueName(row, "CategoryID")
        //here cell.innerHTML holds the value of the cell    
    }
}

请告诉我如何获取所选行。

2 个答案:

答案 0 :(得分:3)

以下是如何选择是否选中复选框。我正在使用带有CheckBox的GridTemplateColumn作为ItemTemplate,Telerik总是建议在GridCheckBoxColumn上使用它。

诀窍是获取单元格中的内部HTML,并解析控件的名称。单元格值类似于id=cbxRow,其中CheckBox控件的ID为cbxRow,如下例所示。

JavaScript的:

var grid = $find("RadGrid1");
var masterTableView = grid.get_masterTableView();
var selectedRows = masterTableView.get_selectedItems();

for (var i = 0; i < selectedRows.length; i++) {
    var cellCB = masterTableView.getCellByColumnUniqueName(row, "CB");
    var innerCB = cellCB.innerHTML;
    var locId = innerCB.indexOf("id=");
    var locIdEnd = innerCB.indexOf("\" ", locId);
    var idVal = innerCB.substr(locId + 4, locIdEnd - locId - 4);
    var cbx = document.getElementById(idVal);
    if (cbx.checked) {
        alert("The checkbox is checked!");
    }
    else {
        alert("The checkbox is not checked!");
    }
}

ASPX:

<telerik:GridTemplateColumn UniqueName="CB" ...>
    <ItemTemplate>
        <asp:CheckBox ID="cbxRow" runat="server">
    </ItemTemplate>
</telerik:GridTemplateColumn>

答案 1 :(得分:1)

我尝试了以下方法,解决了我的问题:

this._Button1.Attributes.Add("OnClick", "GetSelectedItems('" + _RadGrid1.ClientID + "');return false;");