从具有复选框的iggrid中的已检查行中获取数据

时间:2014-06-26 18:56:38

标签: javascript c# infragistics ignite-ui iggrid

我目前有一个网格,用于在单击时将所选行的数据存储在数组中。这种方法完全正常,但是我试图改变它,这样我就可以用复选框选择多行,并能够将所有日期存储在我的数组中。基本上,我希望能够在我的数组中添加多行,而不是一次添加一行。我不知道你们是否跟着我,但请查看我的代码,以便我们找到办法。

在这里,

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>

我已经添加了这个功能,在我的网格中有复选框,但还没有处理它们!

/////////////////////////////////////////////// ////////////////////////////////////////////

很少编辑所以我可以清理一些事情

让我试着再详细说明一下我希望能做些什么。我希望能够将行数组中检查的所有行中的数据作为批处理添加。那就是说,我说我检了三排。当我按下'确定&#39;按钮,它应该存储我的数组中所有三行的信息。

如果一切顺利,我的阵列应该有三个元素&#39;。例如,array [0]将包含来自检查的第一行的数据。这将允许我访问每个单元格并存储&#39; textContent&#39;他们来自&#39; ContactToBind&#39;这就是我现在用来存储每个小区信息的内容。

我希望能稍微清理一下!

非常感谢你的帮助。

纪尧姆

1 个答案:

答案 0 :(得分:2)

您可以使用.igGrid( "allRows" );获取网格中的所有行,将其保存在名为"myRows"的变量中。然后编写javascript代码以遍历从"myRows"获得的.igGrid( "allRows" )并检查每行的组合框的值。如果当前行的组合框&#34;已选中&#34;,请将此当前行放入数组中。在循环结束时,您将获得已检查的数组中的所有行。

如果您不知道如何遍历存储在"allRows"变量中的"myRows",请使用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;
}