你如何为gridview提供多个控件?

时间:2011-04-25 19:29:01

标签: asp.net gridview webforms

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

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

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

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

好的希望你还没有解决这个问题,因为我花了几分钟的时间想出一个我认为会做你想做的事情的例子。

数据库访问使用存储过程,但您可以将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>

和您的查询的T-SQL:

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

如果用户未在任一字段中输入任何内容,则SqlDataSource仍会因SqlDataSource.CancelSelectOnNullParameter = False而绑定,但由于设置了ControlParameter.DefaultValue,因此不会随查询一起发送空参数。然后,存储过程将NULL值插入到参数中,并基本上跳过WHERE子句中的过滤部分。

希望这有帮助。

答案 1 :(得分:0)

听起来你真正问的是如何根据多个可能的过滤器参数过滤数据源。解释这将需要知道您的数据源是什么。无论哪种方式,gridview只是显示过滤结果,对吗?

如果您使用SQL作为数据源,那么该技术将与在内存中过滤集合完全不同。所以有关这方面的更多信息会有所帮助。

答案 2 :(得分:0)

您可以使用(TextBox1.Text.Trim.Length&gt; 0)或(TextBox1.Text =“”)

检查文本框