【问题标题】:Filtering Gridview w/ SQL & cmd.Parameters使用 SQL 和 cmd.Parameters 过滤 Gridview
【发布时间】:2016-04-13 16:04:13
【问题描述】:

我有一个需要使用 4 个 DropDownLists 过滤的 Gridview (GridView1) 现在我只尝试通过前两个选择进行过滤。

Ddl供应商 DdlStore

我通过使用 SQL 查询来完成它

        string query = "Select DISTINCT *, dbo.getsource(version, store_account) as source " + 
                        " FROM TABLENAME " +
                        " WHERE (name=@name or @name = '') " +
                        " and (store_name=@Sname or @Sname = '') " + 
                        " and canceled = 0 " +
                        " and (trans_date between @start and @end) and User_id not in (45493,43020,45491) and internal_use = 0  " + 
                        " order by " + sort + " ";

如果您想知道所有额外的恶作剧是什么,过滤器当前会删除我们发送的所有测试订单。

 using (SqlCommand cmd = new SqlCommand(query))
        {
           using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
            {
                cmd.Connection = con;
                using (DataTable dt = new DataTable())
                {
                    cmd.Parameters.AddWithValue("@name", DdlVendor.SelectedIndex > 0 ? DdlVendor.SelectedValue : "");
                    cmd.Parameters.AddWithValue("@Sname", DdlStore.SelectedIndex > 0 ? DdlStore.SelectedValue : "");
                    cmd.Parameters.AddWithValue("@start", start);
                    cmd.Parameters.AddWithValue("@end", end);
                    sda.Fill(dt);
                    GridView1.DataSource = dt;
                    GridView1.DataBind();

@Name 和@Sname 是我用于前两个下拉列表的内容。问题是当我完成选择我的值并应用它们时,GridView 变为空白且没有错误。

目标是通过在每个下拉列表中选择的值过滤您在网格视图中看到的内容。

我会尽我所能澄清您的任何问题。

这是我的下拉列表之一

<asp:DropDownList ID="DdlVendor" AppendDataBoundItems="True" runat="server" CssClass="form-control ftxt" PropertyName="SelectedValue" DataSourceID="SqlDataSource1" DataTextField="Name" DataValueField="Dist_num" AutoPostBack="True">
            <asp:ListItem Text="ALL" Value=""/>
        </asp:DropDownList>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DATABASE %>" SelectCommand="SELECT DISTINCT [Name], [Dist_num] FROM [VIEWNAME]"></asp:SqlDataSource>

这是我的 GridView 以 Boundfield 为例

<asp:GridView ID="GridView1" runat="server" AllowSorting="True" Width="100%"  CssClass="main-table"  AutoGenerateColumns="False">

<asp:BoundField DataField="Name" HeaderText="Vendor" ItemStyle-Width="80px" SortExpression="Name" />

【问题讨论】:

  • 当 GridView 重新绑定为空时,通常意味着选择失败。您是否使用强制输入测试了 select 语句?即在 SSMS 中使用声明和设置的变量运行它?
  • 我没有想到这一点。我通常无权访问表和视图。我只使用给我的东西。我可以试一试。

标签: c# sql asp.net gridview webforms


【解决方案1】:

我找到了解决办法!

我一直在尝试将字母值存储为数值。

所以通过改变

"WHERE (name=@name or @name = '') " +

" WHERE (Dist_num=@name or @name = '') " +

Gridview 过滤器非常漂亮。与第二个查询相同

" and (store_name=@Sname or @Sname = '') " +

" and (store_Account=@Sname or @Sname = '') " +

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多