Как получить ListItem внутри CheckBoxList, который вызвал обратную передачу? - PullRequest
2 голосов
/ 12 августа 2011

У меня есть два CheckBoxLists, и мне нужно иметь возможность установить ListItems, выбранные в одном из CheckBoxList, в зависимости от элементов, выбранных в другом CheckBoxList.

Как узнать, какой ListItem внутри CheckBoxList выдалпостбэк?Метод должен быть запущен на сервере.

ОБНОВЛЕНИЕ РЕШЕНИЯ:

Окончательное решение, которое я использовал (спасибо Four):

protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
    var selectedItem = CheckBoxList1.SelectedItem;
}

Где selectedItemэто элемент ListItem, по которому щелкнули.

Ответы [ 2 ]

2 голосов
/ 12 августа 2011

Установите для свойства AutoPostBack значение True, а затем внесите и внесите необходимые изменения на сервере: Как использовать функцию AutoPostBack в CheckBoxList

<asp:CheckBoxList   
         ID="CheckBoxList1"  
         runat="server"  
         AutoPostBack="true"  
         OnSelectedIndexChanged="CheckBoxList1_SelectedIndexChnaged"  
> 

Чтобы увидеть, какие элементы ListItems былипроверено, вы можете перебирать CheckBoxList следующим образом:

protected void CheckBoxList1_SelectedIndexChnaged(object sender, System.EventArgs e)  
{  
    Label1.Text = "You Selected:<br /><i>";  
    foreach (ListItem li in CheckBoxList1.Items)  
    {  
        if (li.Selected == true)  
        {  
            Label1.Text += li.Text + "<br />";  
        }  
    }  
    Label1.Text += "</i>";  
}

Чтобы получить значение ListItem, которое было проверено без перебора всех ListItems, вы можете сделать следующее:

protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
    CheckBoxList list = (CheckBoxList)sender;
    string[] control = Request.Form.Get("__EVENTTARGET").Split('$');
    int index = control.Length - 1;
    ListItem li = (ListItem)list.Items[Int32.Parse(control[index])];
}

На данный момент у вас будет актуальный ListItem, который был проверен, и вы можете делать с ним все, что пожелаете.

1 голос
/ 13 августа 2011

Намного проще:

var selectedItem = CheckBoxList1.SelectedItem;
...