中继器控制搜索

时间:2013-10-17 09:19:48

标签: asp.net vb.net

 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,以显示特定的许可证详细信息。

2 个答案:

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

祝你好运......!