我目前有一个网格,它在单击时将所选行的数据存储在一个数组中。这种方法工作得很好,但是我正在尝试更改它以便我可以使用复选框选择多行并能够将所有日期存储在我的数组中。基本上,我希望能够在其中添加多行,而不是一次在我的数组中添加一行。我不知道你们是否关注我,但请查看我的代码,以便我们找到实现此目的的方法。
在这里,
Javascript:
$('#GridBindContact').on('iggridselectionactiverowchanged', function (event, args) {
$("#PrimaryKey").val(args.row.element[0].cells[1].textContent);
$("#ContactToBind_Numcon").val(args.row.element[0].cells[1].textContent);
$("#ContactToBind_FullName").val(args.row.element[0].cells[2].textContent + ' ' + args.row.element[0].cells[3].textContent);
$("#ContactToBind_Titcon").val(args.row.element[0].cells[4].textContent);
$("#ContactToBind_Tel1con").val(args.row.element[0].cells[5].textContent);
$("#ContactToBind_Tel2con").val(args.row.element[0].cells[6].textContent);
$("#ContactToBind_Emailcon").val(args.row.element[0].cells[7].textContent);
$("#ContactToBind_NumEmployees").val(args.row.element[0].cells[8].textContent);
$("#ContactToBind_NameEmployees").val(args.row.element[0].cells[9].textContent);
$("#ContactToBind_Added").val(true);
$(".ui-button-text").trigger("click");
});
在我看来:
@(Html.Infragistics.Grid(Of Contact)(Model.Results).ID("GridBindContact").
AutoGenerateColumns(False).
Width("100%").
Height("400px").
ResponseDataKey("Results").
Columns(Sub(column)
column.For(Function(e) e.Numcon).Template("${Numcon}").HeaderText("Num")
column.For(Function(e) e.Pnmcon).Template("${Pnmcon}").HeaderText("Pnm").Width("10%")
column.For(Function(e) e.Namemcon).Template("${Namecon}").HeaderText("Name").Width("15%")
column.For(Function(e) e.Titcon).Template("${Titcon}").HeaderText("Title").Width("20%")
column.For(Function(e) e.Tel1con).Template("${Tel1con}").HeaderText("Tel1")
column.For(Function(e) e.Tel2con).Template("${Tel2con}").HeaderText("Tel2")
column.For(Function(e) e.Emailcon).Template("${Emailcon}").HeaderText("Email")
column.For(Function(e) e.NumEmployees).HeaderText("Num Emp")
column.For(Function(e) e.NameEmployees).HeaderText("Name Emp")
End Sub).
Features(Sub(features)
features.Sorting().Type(OpType.Local)
features.RowSelectors.EnableCheckBoxes(True).RowSelectorsColumnWidth("50px").EnableRowNumbering(False)
features.Selection().Mode(SelectionMode.Row).MultipleSelection(True).AddClientEvent("activeRowChanging", "activeRowChanging")
features.Updating().EditMode(GridEditMode.None).EnableAddRow(False).EnableDeleteRow(False)
End Sub).Render())
<form action="#" id="ajaxForm" method="post">
@Html.HiddenFor(Function(x) x.PrimaryKey)
@Html.HiddenFor(Function(x) x.ContactToBind.Numcon)
@Html.HiddenFor(Function(x) x.ContactToBind.FullName)
@Html.HiddenFor(Function(x) x.ContactToBind.Titcon)
@Html.HiddenFor(Function(x) x.ContactToBind.Tel1con)
@Html.HiddenFor(Function(x) x.ContactToBind.Tel2con)
@Html.HiddenFor(Function(x) x.ContactToBind.Emailcon)
@Html.HiddenFor(Function(x) x.ContactToBind.NumEmployees)
@Html.HiddenFor(Function(x) x.ContactToBind.NameEmployees)
</form>
我已经添加了在我的网格中包含复选框的功能,但是还没有任何东西可以处理它们!
/////////////////////////////////////////////////////////////////////////////////////
稍微编辑一下,这样我就可以清理一些东西
让我试着详细说明一下我希望能够做什么。我希望能够批量添加在行数组中选中的所有行的数据。也就是说,假设我检查了三行。当我按下“确定”按钮时,它应该将所有三行的信息存储在我的数组中。
如果全部成功,我的数组应该有三个“元素”。例如,array[0] 将包含检查的第一行中的数据。这将允许我访问每个单元格并将它们的“textContent”存储在“ContactToBind”中,这是我目前用来存储每个单元格信息的内容。
我希望这能稍微澄清一点!
非常感谢您的帮助。
纪尧姆
最佳答案
您可以使用.igGrid( "allRows");
获取您的网格中的所有行,将其保存在名为"myRows"
的变量中。然后编写 javascript 代码遍历从 .igGrid( "allRows")
获得的 "myRows"
并检查每一行的组合框的值。如果当前行的组合框被“选中”,则将当前行放入您的数组中。在循环结束时,您将检查数组中的所有行。
如果您不知道如何遍历存储在 "myRows"
变量中的 "allRows"
,请使用 console.log(myRows)
并检查浏览器控制台窗口中的对象结构。您将能够看到如何进入复选框列,它会是这样的,但我不确定请使用 console.log 检查自己:
for(var i = 0 ; i < myRows.length ; i ++ )
{
myRows[i].cells....(select the checked combobox)
if yes then store myRows[i] in your array;
}
关于javascript - 使用复选框从iggrid中的选中行获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24438100/