Получить данные из проверенных строк в 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>
Я уже добавил возможность иметь флажки в своей сетке, но мне пока нечего с ними обрабатывать!
////////////////////////////////////////////////// /////////////////////////////////////////
Небольшое редактирование, чтобы я мог прояснить некоторые вещи
Позвольте мне немного подробнее рассказать о том, что я хочу делать в точности. Я хочу иметь возможность добавлять данные из всех строк, которые проверяются в массиве строк в виде пакета. Тем не менее, скажем, я проверил три ряда. Когда я нажимаю кнопку "ОК", она должна хранить информацию из всех трех строк в моем массиве.
Если все успешно, мой массив должен иметь три "элемента". Например, массив [0] будет содержать данные из первой строки, которая проверяется. Это позволило бы мне получить доступ к каждой ячейке и сохранить "textContent" из них в "ContactToBind", который я сейчас использую для хранения информации о каждой ячейке.
Я надеюсь, что это немного прояснит!
Большое спасибо за вашу помощь.
Гийом
1 ответ
Ты можешь использовать .igGrid( "allRows" );
чтобы получить все строки в вашей таблице, сохраните ее в переменной с именем "myRows"
, Затем напишите код JavaScript, чтобы пройти через "myRows"
ты получил от .igGrid( "allRows" )
и проверьте значение поля со списком каждой строки. Если текущая строка имеет свой флажок "флажок", поместите эту текущую строку в ваш массив. в конце цикла у вас будут все строки в вашем массиве, которые были проверены.
Если вы не знаете, как пройти через "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;
}