Формы Windows Listbox и множественный выбор в виде дерева чередуются в веб-форме asp.net

Я пытаюсь добиться множественного выбора функций в asp.net, как в формах Windows. Требуется предоставить в интерфейсе, где все возможные элементы отображаются с одной стороны, пользователь выбирает элемент и нажимает кнопку с текстом «>», чтобы перемещать элементы в панели выбранных элементов. Аналогично при нажатии кнопки с текстом ">>" все элементы должны перемещаться на панель выбранных элементов и наоборот для кнопок с текстом "‹" и "‹‹". Кроме того, когда пользователь нажимает кнопку «Сохранить», элементы на панели выбранных элементов сохраняются в базе данных, в то время как при редактировании элементы записи должны быть помещены в конкретную панель, то есть на панель выбранных и невыбранных элементов. Надеюсь, вы поняли мою точку зрения, я пытаюсь реализовать эту функциональность в веб-формах с .NET 3.5, но не знаю, с чего начать и что делать с Google. Спасибо за любое руководство.


person Ahmad Ahsan    schedule 05.08.2014    source источник
comment
Где твой код? любая попытка?   -  person Saman Gholami    schedule 05.08.2014
comment
Как я уже упоминал в своем посте, не знаю, как начать или что искать в Google, я искал, используя ключевые слова, такие как окно списка форм Windows, альтернативное в ASP.NET для множественного выбора и т. д., нашел некоторые ссылки, такие как dotnetcurry.com/showarticle.aspx?ID=209, но они связаны с формой окна. Я думаю, что события и элементы управления, используемые в коде, недоступны в веб-формах.   -  person Ahmad Ahsan    schedule 05.08.2014


Ответы (2)


Если я правильно понял ваш вопрос, вы хотите что-то вроде этого:

введите здесь описание изображения

Для реализации этого, прежде всего, у меня есть 2 ListBox на моей странице, lstSource и lstDest. После этого я добавляю ListItem к свойству Items элемента lstSource. Затем я реализую кнопки с кодом программной части следующим образом:

protected void btnSelectOne_Click(object sender, EventArgs e)
{
  lstDest.Items.Add(lstSource.SelectedItem);
}

protected void btnSelectAll_Click(object sender, EventArgs e)
{
  foreach (ListItem item in lstSource.Items)
  {
    lstDest.Items.Add(item);
  }
}

Надеюсь, это поможет. Но имейте в виду, что это элементы управления на стороне сервера, и они не являются хорошим выбором для этой цели, вместо них следует использовать подключаемые модули javascript или jquery.

person Saman Gholami    schedule 05.08.2014
comment
Спасибо, Саман, ты очень хорошо понял мою точку зрения. Но как я могу добиться складной функциональности, используя этот подход со списком? Например, я связал данные левого списка из базы данных как страны с их состояниями в свернутом состоянии, т.е. когда страна выбрана, города раскрываются ниже названия страны. Пользователь выбирает город и нажимает кнопку ›, после чего название города вместе с названием страны (в сворачиваемом виде) перемещается на правую панель. - person Ahmad Ahsan; 05.08.2014
comment
Для этого подхода следует использовать элемент управления TreeView ASP.NET. - person Saman Gholami; 05.08.2014

В событии нажатия кнопки вы можете сделать что-то вроде этого:

protected void Button1_Click(object sender, EventArgs e)
{
    if (ListBox1.Items.Count > 0)
    {
        foreach (ListItem item in ListBox1.Items)
        {
           if (item.Selected == true)
           {
               //insert your code that adds the selected item to the panel you have
           }
        }
    }
}

Есть несколько вещей, с которыми вы должны справиться в первую очередь. Измените режим выбора на множественный и обработайте обратную передачу (если вы этого не сделали).

person Apostrofix    schedule 05.08.2014