【问题标题】:Get selected items in a RadGrid client-side获取 RadGrid 客户端中的选定项目
【发布时间】:2014-06-09 17:01:13
【问题描述】:

我想在 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    
    }
}

请告诉我如何获取选定的行。

【问题讨论】:

    标签: c# javascript telerik radgrid


    【解决方案1】:

    这里是如何获得一个复选框是否被选中。我正在使用带有 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>
    

    【讨论】:

    • 感谢您的回复。即使我正在使用 GridTemplateColumn。但是 var grid = $find("RadGrid1") 不起作用。尽管我的网格 ID 设置为 RadGrid1,但它无法找到网格。是不是因为按钮id不是网格的一部分?网格和按钮分别放在一个RadAjaxPanel中。
    • RadGrid 的控件 ID 可能嵌套在页面或面板中。尝试查看源代码以找到它,或者更好的是,查看控件的唯一 ID 属性服务器端。另外,这是在用户控件中吗?
    • 也可以在你的脚本中尝试var grid = $find("&lt;%=RadGrid1.ClientID%&gt;");
    • RadGrid 放置在 RadAjaxPanel 中。然后将其添加到面板中。 RadGrid 具有用于复选框和某些列的 GridTemplateColumn。然后我向 RadAjaxPanel 添加一个文本框,然后向 RadAjaxPanel 添加一个按钮。需要在文本框中输入一个值,并根据选择,单击按钮,将值添加到所有行。我检查了服务器端的唯一 ID,它看起来不错! var grid = $find("") 返回 null。
    • 在设置ID之前是否将控件添加到面板中?唯一 ID 是否只是 RadGrid1
    【解决方案2】:

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

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

    【讨论】:

    • 现在我明白了您的问题是什么,以及为什么您无法得到我的回答。您的 ID 不是RadGrid1,而是带有下划线的_RadGrid1。一旦你解决了这个问题,一切正常。您还应该在此处编辑您的答案以正确格式化代码。
    猜你喜欢
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 2015-04-24
    • 2014-12-02
    相关资源
    最近更新 更多