C# 过滤Gridview w/SQL&;命令参数
我有一个Gridview(GridView1),需要使用4个下拉列表进行过滤 现在我只想通过前两个选项进行筛选 卖方 DdlStore 我通过使用SQL查询来完成它C# 过滤Gridview w/SQL&;命令参数,c#,sql,asp.net,gridview,webforms,C#,Sql,Asp.net,Gridview,Webforms,我有一个Gridview(GridView1),需要使用4个下拉列表进行过滤 现在我只想通过前两个选项进行筛选 卖方 DdlStore 我通过使用SQL查询来完成它 string query = "Select DISTINCT *, dbo.getsource(version, store_account) as source " + " FROM TABLENAME " + "
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是我在前两个dropdownlists中使用的。问题是当我选择完我的值并应用它们时,GridView将毫无错误地变为空白
目标是通过在每个dropdownlist中选择的值过滤您在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" />
我找到了解决方案
我一直在尝试将字母值存储为数值
所以通过改变
"WHERE (name=@name or @name = '') " +
到
Gridview过滤效果很好。与第二个查询相同
" and (store_name=@Sname or @Sname = '') " +
到
我找到了解决办法
我一直在尝试将字母值存储为数值
所以通过改变
"WHERE (name=@name or @name = '') " +
到
Gridview过滤效果很好。与第二个查询相同
" and (store_name=@Sname or @Sname = '') " +
到
当GridView重新绑定为空时,通常意味着选择失败。您是否使用强制输入测试了select语句?i、 在SSMS中使用声明和设置的变量运行它?我没有想到这一点。我通常没有访问表和视图的权限。我只使用给我的东西。我可以试一试。当GridView重新绑定为空时,通常意味着选择失败。您是否使用强制输入测试了select语句?i、 在SSMS中使用声明和设置的变量运行它?我没有想到这一点。我通常没有访问表和视图的权限。我只使用给我的东西。我可以试一试。