日期:2014-05-18  浏览次数:20460 次

ListBox多选传入存储过程的问题
我的页面里有一个ListBox
里面的值是从pubs数据库的jobs表里的job_id字段取出的
显示效果为
---
1
2
3
4
5
6


我设定this.ListBox1.DataTextField   =   "job_id ";
this.ListBox1.DataValueField   =   "job_desc ";//job_desc为jobs表里的job_desc字段

当我选择ListBox的一行后
将选中项的值传给存储过程
存储过程如下:
create   procedure   pro_c
@name   varchar(20)
as
select   job_id,max_lvl,min_lvl   from   jobs   where   job_desc   =   @name

将查询后的结果用一个DataGrid显示出来

问题就出来了!
如果选择ListBox里一项的话,DataGrid可以正确的显示选中项的相关信息
但是在ListBox里,选择了多项后,比如选择了3和5点击Button后,DataGrid里只显示5的相关信息.

请问如何解决这种问题?

------解决方案--------------------
很抱歉 刚才给错答案了 还是那里引号出问题了
特改如下
exec pro_c 'Publisher '
exec pro_c 'Publisher,Publisher2,Publisher3 '


CREATE PROCEDURE pro_c
@name nvarchar(200)
AS
declare @querystring nvarchar(500)
declare @sname nvarchar(200)
declare @alen bigint
declare @len bigint

set @querystring = 'select job_id,max_lvl,min_lvl from jobs where 1=1 and '
set @name = @name + ', '
while CHARINDEX( ', ',@name)> 0
begin
set @len = len(@name)
set @alen = CHARINDEX( ', ',@name)
set @sname = left(@name,@alen-1);
set @querystring = @querystring + ' job_desc = '+ ' ' ' '+@sname+ ' ' ' '+ ' or '
set @name = right(@name,@len-@alen);
end
set @querystring = left(@querystring,Len(@querystring)-2)
--select @querystring
EXEC sp_ExecuteSql @querystring
GO