Tôi có một repeater, trong mỗi ItemTemplate của repeater là một asp: checkbox với bộ xử lý sự kiện OnCheckedChanged. Các hộp kiểm có thuộc tính AutoPostBack được đặt thành true. Khi bất kỳ hộp kiểm nào được chọn, trình xử lý sự kiện sẽ kích hoạt. Khi bất kỳ được bỏ chọn, trình xử lý sự kiện không kích hoạt.OnCheckedChanged xử lý sự kiện của asp: hộp kiểm không cháy khi hộp kiểm được bỏ chọn
Bất kỳ ý tưởng nào tại sao sự kiện không kích hoạt và cách tôi làm cho nó cháy? Cảm ơn.
Giản đang lặp lại:
<asp:Repeater ID="rptLinkedItems" runat="server">
<ItemTemplate>
<asp:CheckBox ID="chkLinked" runat="server"
Checked="false" OnCheckedChanged="chkLinked_CheckedChanged" />
</ItemTemplate>
</asp:Repeater>
Bộ sưu tập chắc chắn sẽ lặp lại như sau:
protected override void OnPreRenderComplete(EventArgs e)
{
if (!Page.IsPostBack)
{
m_linkedItems = GetLinkedItems();
rptLinkedItems.DataSource = GetLinkableItems();
rptLinkedItems.ItemDataBound += new RepeaterItemEventHandler
(rptLinkedItems_ItemDataBound);
rptLinkedItems.DataBind();
}
base.OnPreRenderComplete(e);
}
Các xử lý sự kiện OnItemDataBound được như sau:
private void rptLinkedItems_ItemDataBound(Object sender, RepeaterItemEventArgs args)
{
if (args.Item.ItemType == ListItemType.Item || args.Item.ItemType == ListItemType.AlternatingItem)
{
CategoryItem item = args.Item.DataItem as CategoryItem;
Literal litItemName = args.Item.FindControl("litItemName") as Literal;
CheckBox chkLinked = args.Item.FindControl("chkLinked") as CheckBox;
litItemName.Text = item.Text;
chkLinked.Checked = IsItemLinked(item);
chkLinked.AutoPostBack = true;
chkLinked.InputAttributes.Add("Value", item.Id.ToString());
}
}
Sự kiện OnCheckedChanged xử lý như sau:
protected void chkLinked_CheckedChanged(Object sender, EventArgs args)
{
CheckBox linkedItem = sender as CheckBox;
Boolean itemState = linkedItem.Checked;
Int32 itemId = Int32.Parse(linkedItem.InputAttributes["Value"].ToString());
DataAccessLayer.UpdateLinkedItem(m_linkingItem, Utilities.GetCategoryItemFromId(itemId), itemState);
}
P.S. Nếu ai đó cũng có thể cho tôi biết tại sao markdown không hoạt động một cách chính xác đối với tôi ...
@ Jibberish: RE: PS của bạn Bạn đã không làm điều đó đúng. ;) Thử mở câu hỏi này ở chế độ chỉnh sửa và xem tôi đã thực hiện những thay đổi nào. Điểm chính 4 dấu cách để mã tiền tố, trình soạn thảo chỉ thị cho bạn thực hiện trong bảng điều khiển bên phải. – AnthonyWJones
Cảm ơn Anthony, và xin lỗi tôi đã bỏ lỡ điều đó trong biên tập viên. – Jason