Asp.net 如何为gridview设置多个控件?
例如,我有一个gridview和两个文本框 一个文本框用于搜索文本。 第二个文本框是要搜索的订单号 我希望我的gridview基于其中一个进行填充。我不知道如何告诉我的表单,如果用户使用的是一个数字搜索,如果是一个名称,则改为使用该名称搜索Asp.net 如何为gridview设置多个控件?,asp.net,gridview,webforms,Asp.net,Gridview,Webforms,例如,我有一个gridview和两个文本框 一个文本框用于搜索文本。 第二个文本框是要搜索的订单号 我希望我的gridview基于其中一个进行填充。我不知道如何告诉我的表单,如果用户使用的是一个数字搜索,如果是一个名称,则改为使用该名称搜索 谢谢您的帮助。听起来您真正想问的是如何基于多个可能的筛选参数筛选数据源。解释这一点需要知道您的数据源是什么。无论哪种方式,gridview都将显示过滤后的结果,对吗 如果您对数据源使用SQL,那么该技术将与在内存中过滤集合完全不同。因此,有关这方面的更多信息
谢谢您的帮助。听起来您真正想问的是如何基于多个可能的筛选参数筛选数据源。解释这一点需要知道您的数据源是什么。无论哪种方式,gridview都将显示过滤后的结果,对吗
如果您对数据源使用SQL,那么该技术将与在内存中过滤集合完全不同。因此,有关这方面的更多信息将很有帮助。您可以使用(TextBox1.Text.Trim.Length>0)或(TextBox1.Text=“”)检查文本框。好的,希望您还没有解决这个问题,因为我花了几分钟的时间想出了一个示例,我认为它可以满足您的需求 DB access使用存储过程,但您可以将ObjectDataSource与DAL一起使用,也可以只内联SqlDataSource上的SQL语句,等等 标记:
Product ID:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:CompareValidator ID="CompareValidator1" ControlToValidate="TextBox1" runat="server" ErrorMessage="You must enter a number"
ValidationGroup="vg1" Type="Integer" Operator="DataTypeCheck"></asp:CompareValidator>
<br />
Description:
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
<asp:Button ID="cmdSearch" runat="server" Text="Search" ValidationGroup="vg1" /><br />
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1">
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" SelectCommand="spGetProducts"
CancelSelectOnNullParameter="False" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:ControlParameter ControlID="TextBox1" PropertyName="Text" DbType="String" DefaultValue="" />
<asp:ControlParameter ControlID="TextBox2" PropertyName="Text" DbType="Int32" DefaultValue="" />
</SelectParameters>
</asp:SqlDataSource>
如果用户没有在这两个字段中输入任何内容,由于设置了ControlParameter.DefaultValue
,SqlDataSource仍将绑定SqlDataSource.CancelSelectOnNullParameter=False
,但空参数将不会随查询一起发送。然后,存储过程将向参数中插入NULL值,并基本上跳过WHERE子句中的过滤部分
希望这能有所帮助。你能分享你用来访问数据的sql查询吗?这只是一个datatable可视化查询。你有提交按钮吗,或者,您希望在焦点丢失时进行过滤,然后根据文本框中输入的值,您可以使用ifelse来使用过滤逻辑检查文本框是否为空的更普遍的形式是
String.IsNullOrEmpty(TextBox1.Text)
CREATE PROCEDURE spGetProducts
@ProductId int = NULL
,@ProductDescription nvarchar(100) = NULL
AS
BEGIN
SELECT [ProductId]
,[ProductDescription]
FROM [Products]
WHERE (
(
(@ProductId IS NULL)
OR
([ProductId] LIKE % + @ProductId + %)
)
AND
(
(@ProductDescription IS NULL)
OR
([ProductDescription] LIKE % + @ProductDescription + %;)
)
);
END