Как получить доступ к флажку в DataList с помощью vb.net - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть datalist, и у каждого элемента в datalist есть checkbox и отключено button. Я хочу, чтобы при проверке checkbox кнопка была включена.

Как получить доступ к событию флажка для элемента в datalist?

Ответы [ 3 ]

1 голос
/ 08 февраля 2012

Пожалуйста, следуйте инструкциям ниже:

  1. Определение OnCheckedChanged метода CheckBox во время разработки
  2. В методе OnCheckedChanged найдите DataListItem
  3. Найдите необходимый элемент управления в DataList; Вы также можете найти его в текущей строке, используя индекс текущего DataListItem
  4. Изменить свойство enable найденного элемента управления

Это будет выглядеть примерно так:

    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;
        }
     }

Надеюсь, это поможет.

0 голосов
/ 16 июня 2014
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
0 голосов
/ 08 февраля 2012

Сначала вы должны объявить Private WithEvents chk As CheckBox (WithEvents позволит вам иметь ссылку для флажка внутри списка данных)

Затем внутри 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 ссылкой для флажка внутри списка данных

наконец вам нужно обработать событие checkbox / uncheck ( PS важно иметь ваш флажоккоторый находится внутри списка данных, для свойства 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
...