【发布时间】: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