SELECT * FROM [License] WHERE ([LicenseID] = @LicenseID)
这是我放在转发器 sqldatasource 中的代码。如果我在文本框中键入许可证 ID 1,我可以看到中继器中连接到许可证 ID 1 的值。
如何在sqldatasource中放置if语句,以便在页面加载时我可以在中继器中看到表许可证的所有详细信息,如果在文本框中键入许可证ID后按下搜索按钮,则将显示与该特定许可证ID相关的值。
谢谢编辑我正在尝试你说的方式古尔丁但是
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
在页面加载时,我想显示所有字段,在文本框中键入许可证 ID 时,我想显示特定的许可证 ID 详细信息。
这样用
法 SqlDataSource1.SelectParameters["LicenseID"].DefaultValue="*";
在您的页面加载中。
并确保将其写在!ispostback
关于 SO:- sqldatasource 默认值的类似问题
我相信还有其他方法可以解决这个问题,但这是我能想到的最接近的方法。
首先,像这样修改您的查询...
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,但查询的其余部分将根据您键入的许可证 ID 的值相应地工作。
当用户清除文本框时,或者通过单击某些重置按钮,可以将隐藏字段值设置回 1。这样,查询将重置回"选择所有"模式。
祝你好运...!