Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何为gridview设置多个控件?_Asp.net_Gridview_Webforms - Fatal编程技术网

Asp.net 如何为gridview设置多个控件?

Asp.net 如何为gridview设置多个控件?,asp.net,gridview,webforms,Asp.net,Gridview,Webforms,例如,我有一个gridview和两个文本框 一个文本框用于搜索文本。 第二个文本框是要搜索的订单号 我希望我的gridview基于其中一个进行填充。我不知道如何告诉我的表单,如果用户使用的是一个数字搜索,如果是一个名称,则改为使用该名称搜索 谢谢您的帮助。听起来您真正想问的是如何基于多个可能的筛选参数筛选数据源。解释这一点需要知道您的数据源是什么。无论哪种方式,gridview都将显示过滤后的结果,对吗 如果您对数据源使用SQL,那么该技术将与在内存中过滤集合完全不同。因此,有关这方面的更多信息

例如,我有一个gridview和两个文本框

一个文本框用于搜索文本。 第二个文本框是要搜索的订单号

我希望我的gridview基于其中一个进行填充。我不知道如何告诉我的表单,如果用户使用的是一个数字搜索,如果是一个名称,则改为使用该名称搜索


谢谢您的帮助。

听起来您真正想问的是如何基于多个可能的筛选参数筛选数据源。解释这一点需要知道您的数据源是什么。无论哪种方式,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