Несколько значений из списка

#asp.net #vb.net #parameters #listbox

#asp.net #vb.net #параметры #список

Вопрос:

Я использую asp.net с vb.net . Я создал 2 списка; lstselect и lstroles. List boxes lstselect содержит все доступные роли, которые могут быть добавлены в lstroles. Как мне взять роли, которые были добавлены в lstroles, и превратить их в параметр, который будет перенесен в мою базу данных при запуске хранимой процедуры?

Вот код для того, как мои списки распределяют роли:

 Protected Sub btnRight_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnRight.Click
    If lstselect.SelectedIndex <> -1 Then
        lstroles.Items.Add(lstselect.SelectedItem.Text)
        lstselect.Items.Remove(lstselect.SelectedItem.Text)
    End If
End Sub

Protected Sub btnLeft_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnLeft.Click
    If lstroles.SelectedIndex <> -1 Then
        lstselect.Items.Add(lstroles.SelectedItem.Text)
        lstroles.Items.Remove(lstroles.SelectedItem.Text)
    End If
End Sub
  

Спасибо!

Ответ №1:

Есть два способа сделать это:

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

 string commaSeparatedParams = string.Join(",", myArray);
  

2) Создайте XML, каждая роль была бы узлом. И передайте XML в качестве параметра вашей хранимой процедуры. Большинство баз данных поддерживают простое извлечение данных из XML. Кстати, какую базу данных вы используете?

3) Если вы используете MS SQL 2008, вы также можете использовать Table-Valued Parameters : http://msdn.microsoft.com/en-us/library/bb510489.aspx

но это рекомендуется только для операций массовой вставки. Я бы сказал, что рекомендуемый подход для вас — XML.

Комментарии:

1. Я использую MS SQL Sever 2008.

2. можете ли вы более подробно объяснить, как использовать XML-метод, может быть, даже пример кода?

3. хотя это пример MS SQL 2005, концепция проиллюстрирована здесь: weblogs.asp.net/jgalloway/archive/2007/02/16 /…

Ответ №2:

Способ использования параметров с табличными значениями, наряду с рекомендациями по наилучшей практике, доступен здесь:

http://www.sommarskog.se/arrays-in-sql-2008.html