0
 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

在页面加载时,我想显示所有字段并在文本框中键入 licenseid 以显示特定的 licenceid 详细信息。

4

2 回答 2

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。这样,查询将重置为全选模式。

祝你好运...!

于 2013-10-17T09:40:47.503 回答
0

像这样使用

 SqlDataSource1.SelectParameters["LicenseID"].DefaultValue="*";

在您的页面加载。

并确保你把它写在里面!ispostback

关于 SO 的类似问题:- sqldatasource 默认值

于 2013-10-17T09:24:28.240 回答