DropdownList SqlDataSource不会拉* all *记录

时间:2011-09-02 15:46:04

标签: asp.net drop-down-menu sqldatasource

我有一个与SQLDataSource绑定的DropDownList。我在SQL Management Studio中运行完全相同的查询,它会提取所有记录,但是当我在SQLDataSource中执行它时,它不会拉出我刚添加的两条记录。为什么呢?

SELECT [RepID], [ManagerID] 
FROM MyDB1.dbo.Reps 
WHERE [Role] = 'Manager' AND ISNULL(RepType, 'Account Exec') <> 'House Account Exec'

union

SELECT [RepID], [ManagerID] 
FROM MyDB2.dbo.Reps 
WHERE [Role] = 'Manager' AND ISNULL(RepType, 'Account Exec') <> 'House Account Exec'

问题行似乎是RepType字段。我确实为我想要提取的记录验证它是 NULL 。我已经花了一个多小时。有人遇到过这样的事吗?有什么建议吗?

SMSS的输出

RepID       ManagerID
----------- -----------
1           1
9           9
10          10        <- this guy does not show in DropDown
42          42
333         333       <- and this guy
1026        1026
1065        1065
2014        1
3009        3009
3025        3025
5000        5000
5002        5002
6000        6000
9000        9000

这不是唯一的问题。即使删除了ISNULL(RepType,'Account Exec')条件,它仍然不会拉回repID = 333,而它会执行pul repID = 10.

我发现有一个repID = 10的副本,但它仍然应该在SSMS和下拉列表中表现相同。

2 个答案:

答案 0 :(得分:1)

这种行为不应该是这样的。这可能是一个错误,但到目前为止我发现了

  1. RepID = 10的Rep代表两条记录,这可能是一个问题。

  2. 在这两个表中,一个表有reptype ='House Account Exec',而在另一个表中它是Null。当在SMSS和SQLDatasource中执行查询时,此条件的插入方式不同。

  3. 还有一些我无法解决的问题。例如,repID = 333,显示在SMSS中,但不显示在下拉列表中。

答案 1 :(得分:0)

建议将SQL查询转换为存储过程而不是adhoc SQL语句。