我有一个datalist
,datalist
中的每个项目都有一个checkbox
并且已停用button
,我希望在checkbox
被选中时,按钮将被启用。
如何访问datalist
中的项目的复选框事件?
答案 0 :(得分:1)
请按照以下步骤操作:
它看起来像这样:
protected void CheckedChangeMethod(object sender, EventArgs e)
{
CheckBox checkBox = ((CheckBox)sender);
DataListItem item = ((DataListItem)CheckBox.NamingContainer);
if (checkBox.Checked)
{
((Button)dataList.Items[item.ItemIndex].FindControl("btnControl")).Enabled = true;
}
}
我希望这会有所帮助。
答案 1 :(得分:0)
首先你需要声明一个Private WithEvents chk As CheckBox
(WithEvents会让你对datalist中的复选框有一个参考)
然后在DataList1_ItemCreated
内,您应该执行以下操作:
Private Sub DataList1_ItemCreated(sender As Object, e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemCreated If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then chk = CType(e.Item.FindControl("CheckBox1"), CheckBox) AddHandler chk.CheckedChanged, AddressOf chk_CheckedChanged End If End Sub
使chk成为datalist中复选框的引用
最后你必须处理复选框检查/取消选中事件( P.S。它是重要的,让你的数据列表中的复选框将属性AutoPostBack设置为true ):
Private Sub chk_CheckedChanged(sender As Object, e As System.EventArgs) Handles chk.CheckedChanged
Dim cb As CheckBox = CType(sender, CheckBox)
Dim item As DataListItem = DirectCast(cb.NamingContainer, DataListItem)
If cb.Checked Then
DirectCast(DataList1.Items(item.ItemIndex).FindControl("Button1"), Button).Enabled = True
Else
DirectCast(DataList1.Items(item.ItemIndex).FindControl("Button1"), Button).Enabled = False
End If
End Sub
答案 2 :(得分:0)
Private Sub chk_CheckedChanged(sender As Object, e As System.EventArgs) Handles chk.CheckedChanged
Dim cb As CheckBox = CType(sender, CheckBox)
Dim item As DataListItem = DirectCast(cb.NamingContainer, DataListItem)
If cb.Checked Then
DirectCast(DataList1.Items(item.ItemIndex).FindControl("Button1"), Button).Enabled = True
Else
DirectCast(DataList1.Items(item.ItemIndex).FindControl("Button1"), Button).Enabled = False
End If
End Sub