Я создал пользовательский серверный элемент управления, основанный на System.Web.Contols.CheckBoxList
, чтобы настроить отображение CheckBoxList
. Я также хотел добавить другое связываемое поле и получить значение поля в методе CheckBoxList.RenderItem()
. Поле, которое я хочу создать, должно содержать значение, указывающее, установлен ли флажок CheckBoxListItem
. Я прочитал несколько статей о пользовательских полях данных, но это никогда не объясняется подробно.
Я включил часть своего класса, чтобы лучше объяснить, что я не могу понять.
public class ListedCheckBoxList : CheckBoxList
{
protected override void RenderItem(ListItemType itemType, int repeatIndex, RepeatInfo repeatInfo, HtmlTextWriter writer)
{
if (itemType != ListItemType.Item)
return;
var item = base.Items[repeatIndex];
string cbxHtml = string.Format("<input type=\"checkbox\" value=\"{0}\" name=\"{1}\" /> {2}",
item.Value,
string.Concat(this.ClientID, repeatIndex),
item.IsChecked, // <-- My custom bindable field
item.Text);
writer.Write(cbxHtml);
}
}
При использовании этого элемента управления на странице .aspx я пытаюсь связать его следующим образом
<abc:ListedCheckBoxList ID="cbxList" runat="server"
DataValueField="UserId"
DataTextField="UserFullName"
DataIsCheckedField="UserIsActive" />