SELECT * FROM [License] WHERE ([LicenseID] = @LicenseID)
这是我在转发器sqldatasource中放置的代码。如果我在文本框中键入许可证ID 1,我可以看到转发器中与许可证ID 1相关的值。
如何在sqldatasource中放置if语句,以便在页面加载时我可以在转发器中看到表许可证的所有详细信息,如果在文本框中键入许可证ID后按下了搜索按钮,那么与该特定值相关的值将显示许可证ID。
谢谢编辑Iam尝试你说Gurdien BUT的方式
SELECT * FROM License WHERE (0 = @selectAll OR LicenseID=@LicenseID) -> Not working
SELECT * FROM License WHERE (0 = @selectAll ) ->working
SELECT * FROM License WHERE (LicenseID=@LicenseID)-> working
在页面加载中,我希望显示所有字段,并在文本框中键入licenseid,以显示特定的许可证详细信息。
答案 0 :(得分:0)
像这样使用
SqlDataSource1.SelectParameters["LicenseID"].DefaultValue="*";
在你的页面加载。
并确保在!ispostback
关于SO的类似问题: - sqldatasource default value
答案 1 :(得分:0)
我相信会有其他方法来解决这个问题,但这是我能想到的最接近的方法。
首先,像这样修改您的查询...
SELECT * FROM License WHERE ([LicenseID] = @LicenseID OR 1 = @selectAll )
然后,在页面内的某处,通过从工具箱中拖动来创建隐藏字段。
将第二个参数@selectAll
的来源设置为该隐藏字段的值。将param属性的默认值设置为1
每当用户单击“搜索”按钮时,将隐藏字段的值设置为0.或者,无论您喜欢什么。
我确定您将@LicenseID
的参数源设置为文本框的值。
我想你已经明白了这一点。
默认情况下,您的查询将如下所示......
SELECT * FROM License WHERE ([LicenseID] = '' OR 1 = 1 )
因此,即使LicenseID = ''
没有任何值,条件1 = 1
也将始终返回true。因此,您将从表中获取所有数据。
当用户输入文本框时,隐藏字段的值将更改为,假设为0,您的查询将变为如此...
SELECT * FROM License WHERE ([LicenseID] = '00112233' OR 1 = 0 )
虽然第二个条件1 = 0
将返回false,但查询的其余部分将根据您输入的LicenseID的值进行相应的处理。
当用户清除文本框或单击某个重置按钮时,可以将隐藏字段值设置回1。这样,查询将重置为选择所有模式。
祝你好运......!