Я динамически связываю типизированный список с элементом управления GridView.Элемент управления Grid View находится на странице asp.net, обернутой в asp: UpdatePanel (Ajax).Первый столбец содержит элемент управления флажок.В этом столбце может быть установлен только один флажок.Если пользователь установит флажок, все остальные флажки должны быть сняты.
Я пытаюсь добиться этого с помощью сценария на стороне клиента, но безуспешно.В обработчике события RowDatabound GridView попытались добавить атрибут в CheckBox, содержащийся в ячейке.
protected void ErrorGridView_RowDatabound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if(e.Row.Cells[0].HasControls())
{
foreach (var control in e.Row.Cells[0].Controls)
{
if (!(control is CheckBox)) continue;
var checkBox = (CheckBox)control;
checkBox.Attributes.Add("CheckedChanged", "errorCheckChanged");
return;
}
}
}
Сценарий на стороне клиента зарегистрирован в обработчике события Page_Load - как показано ниже:
if (! Page.ClientScript.IsClientScriptBlockRegistered ("ErrorsCheckBoxHandler")) Page.ClientScript.RegisterClientScriptBlock (GetType (), "ErrorsCheckBoxHandler", "function errorCheckChanged () {". Window);} ");
Проблема в том, что функция не вызывается при нажатии каких-либо флажков.Надеюсь, кто-нибудь сможет пролить свет на то, что мне здесь не хватает?
Кроме того, как лучше всего отменить выбор любых других флажков, которые отмечены в столбце назначения?
Мой план состоял бы в том, чтобы изменить функцию 'errorCheckChanged', чтобы она принимала один параметр (объект флажка).Я бы изменил приведенный выше код;добавление к атрибуту подписи добавления:
checkBox.Attributes.Add ("CheckedChanged", "errorCheckChanged ( this )");
НадеемсяЯ тогда смогу:(1) определить, если состояние флажка «проверено».(Если он «отмечен», тогда продолжайте шаги ниже)(2) найдите родительский флажок (= ячейка) и затем определите затронутую строку GridView.(3) Прокрутите все строки, установив флажки «Checked = false», кроме текущей строки.
Будет ли это правильным подходом?
Спасибо
Грант