ListBox中的多个值

时间:2011-06-09 16:44:41

标签: asp.net vb.net parameters listbox

我在vb.net上使用asp.net。我创建了2个列表框; lstselect和lstroles。列表框lstselect包含可添加到lstro中的所有可用角色。如何在存储过程运行时将已添加到lstro中的角色作为一个参数拉入我的数据库?

以下是我的列表框如何共享角色的代码:

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

谢谢!

2 个答案:

答案 0 :(得分:0)

有两种方法可以做到:

1)从列表框中选择项目创建逗号分隔值。但这不是推荐的方法,因为您需要在存储过程中解析它。

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

2)创建一个XML,每个Role都是一个Node。并将XML作为存储过程参数传递。大多数数据库支持轻松从XML检索数据。顺便说一句,您使用的是哪个数据库?

3)如果您使用的是MS SQL 2008,还可以使用Table-Valued Parametershttp://msdn.microsoft.com/en-us/library/bb510489.aspx

但它仅推荐用于Bulk Insert类操作。我推荐的方法是XML,我想说。

答案 1 :(得分:0)

此处提供了使用表值参数的方法以及最佳实践建议:

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