中继器控件搜索


 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。这样,查询将重置回"选择所有"模式。

祝你好运...!

最新更新