【问题标题】:Radgrid - persisting checkboxes when page size/Index changes on ClientsideRadgrid - 当页面大小/索引在客户端更改时保留复选框
【发布时间】:2013-09-10 04:19:19
【问题描述】:

在加载网格时使用 Rad 网格客户端事件。

<ClientSettings>
     <Selecting AllowRowSelect="false" />
          <ClientEvents OnGridCreated="GridCreated"  />
</ClientSettings>

我将选中的复选框存储在一个数组中,该数组包含网格第一列的 id,它是表格的主键。

复选框为

<ItemTemplate>
   <asp:CheckBox ID="chkSelectRow" runat="server" ClientIDMode="Static"></asp:CheckBox>
</ItemTemplate>

OnClick Evnet 像这样绑定在 Item Databound 事件上。

chkSelectRow.Attributes.Add("onclick", "RowCheckChanged('" + index +","+chkSelectRow.Checked+"');");

我的 jscript

<script type="text/jscript">
//Enpty array for storing the selected rows of grid.
var selected = {};

//On grid row checked changed
function RowCheckChanged(sender) {
    var args = sender.split(",");
    var currentRowIndex = args[0];
    var checkedStatus = args[1];
    var gridCaseInfo = $find("<%=grdCaseInfo.ClientID %>");
    var currentrow = gridCaseInfo.get_masterTableView().get_dataItems()[currentRowIndex];
    RowSelectionChanged(gridCaseInfo, currentrow)
}

//On grid row selection changed
function RowSelectionChanged(sender, args) {
    var CaseInfoKey = args.getDataKeyValue("CaseInfoID");
    if (args.findElement("chkSelectRow").checked) {
        selected[CaseInfoKey] = true;
    }
    else {
        selected[CaseInfoKey] = false;
    }
}

function GridCreated(sender, eventArgs) {
    debugger;
    var masterTable = sender.get_masterTableView();
//traverse stored id's
    $jQuery.each(selected, function (i) {
//traverse gridrows for id's
        $jQuery.each(masterTable.get_dataItems(), function (j) {
// if it maches then make checkbox selected.
            if ((masterTable.get_dataItems()[j].getDataKeyValue("CaseInfoID") == i)) {
                var currentrow = masterTable.get_dataItems()[j];
                currentrow.findElement("chkSelectRow").checked = true;
                return false;
            }
        });
    });
}

我不知道为什么,但是如果所选数组中有任何条目,它会检查第一个复选框。

【问题讨论】:

  • 我发现问题出在 currentrow.findElement("chkSelectRow").checked = true;此语句 this is not getting the same row checkbox, 现在正试图为其寻找替代方案。

标签: jquery c#-4.0 checkbox client-side radgrid


【解决方案1】:

终于找到解决办法

将网格创建方法更改为

function GridCreated(sender, eventArgs) {
var masterTable = sender.get_masterTableView();
//traverse stored id's
$jQuery.each(selected, function (i) {
//traverse gridrows for id's
    $jQuery.each(masterTable.get_dataItems(), function (j) {
// if it maches then make checkbox selected.
        if ((masterTable.get_dataItems()[j].getDataKeyValue("CaseInfoID") == i)) {
            //changed How to find the Current row
            var currentrow = masterTable.get_dataItems()[j].get_cell("CheckBoxTemplateColumn").firstElementChild.firstElementChild;
           //Then  to check it.
            currentrow.checked = true;
            return false;
        }
    });
});
}

【讨论】:

    【解决方案2】:

    将所有$jQuery 替换为$jQuery 并尝试喜欢,

    jQuery.each(selected, function (i) {
    ....
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-17
      • 2023-04-06
      • 2020-07-15
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 2020-12-03
      • 1970-01-01
      相关资源
      最近更新 更多