繁体   English   中英

过滤器仅在第一次火灾时起作用

Filter Only works on first fire

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

因此,我有一个由sqldatasource填充的gridview,在它的一边,我有一个过滤器列表。 其中一项是下拉菜单。 当页面首次加载并且我选择一个项目时,会发生什么。 筛选器有效,但是如果我尝试更改为其他内容,则不会更改。 我已经调试,并且当我在索引更改时调用绑定时,它会通过sql onselecting方法。

我尝试了一项建议,以在索引更改时设置过滤器表达式,然后调用数据绑定(删除onselecting函数),但仍然无法正常工作。

编辑:这是根据要求的一些标记/代码

数据源:

<asp:SqlDataSource ID="datasource" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" OnSelecting="ApplyFilter"
    SelectCommand="SELECT [CustomerId], [CustomerCancelationStatus], [CustomerGroup], [CustomerFirstName], [CustomerLastName], [CustomerFullName], [CompanyName], [CustomerAddress], [CustomerCity], [CustomerState], [CustomerZipcode], [CustomerFullAddress], [CustomerEmail], [CustomerEmail2], [CustomerPhoneNumber], [CustomerPhoneNumberExt], [CustomerType], [CustomerSubscriptionType], [CustomerCost], [CustomerPaymentMethod], [CustomerSignUpDate], [CustomerPickUpDay], [CustomerPickUpDay2], [CustomerNotes], [CustomerDriver], [HowHeard], [NewBinsRequested] FROM [Customers] WHERE ([CustomerStatus] &lt;&gt; @CustomerStatus) ORDER BY CustomerFirstName ASC">
    <SelectParameters>
        <asp:Parameter DefaultValue="Inactive" Name="CustomerStatus" Type="String" />
    </SelectParameters> 
</asp:SqlDataSource>

落下:

<asp:DropDownList ID="ddlDriver" runat="server" AutoPostBack="True" 
            DataSourceID="driverDataSource" DataTextField="DriverUsername" 
            DataValueField="DriverUsername" AppendDataBoundItems="True" 
            onselectedindexchanged="ddlDriver_OnSelectedIndexChanged" 
            Height="21px" style="position: relative; top: 2px; left: 3px" Width="150px">
            <asp:ListItem>Select...</asp:ListItem>
        </asp:DropDownList>

网格:

<asp:GridView ID="CustomersGridView" runat="server" AllowPaging="True" 
        AllowSorting="True" AutoGenerateColumns="False" BackColor="White" 
        BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" CellPadding="3" 
        DataKeyNames="CustomerId" DataSourceID="SqlDataSource1" ForeColor="Black" 
        GridLines="Vertical" 


        style="z-index: 1; left: 193px; top: -486px; position: relative; height: 35px; width: 600px; text-align: center;" 
        PageSize="500" ShowHeaderWhenEmpty="True" OnPageIndexChanged="CustomersGridView_PageIndexChanged">
        <AlternatingRowStyle BackColor="#CCCCCC" />
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:CheckBox ID="CustomerSelectionCheckBox" runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="CustomerId" HeaderText="ID" InsertVisible="False" 
                ReadOnly="True" SortExpression="CustomerId" />
            <asp:BoundField DataField="CustomerFullName" HeaderText="Name" SortExpression="CustomerFullName"></asp:BoundField>
            <asp:BoundField DataField="CustomerFullAddress" HeaderText="Address" SortExpression="CustomerFullAddress" />
            <asp:BoundField DataField="CustomerPickUpDay" HeaderText="Pick-Up Day" SortExpression="CustomerPickUpDay"></asp:BoundField>
            <asp:BoundField DataField="CustomerGroup" HeaderText="Group" SortExpression="CustomerGroup" />
            <asp:BoundField DataField="CustomerSignUpDate" HeaderText="Sign-Up Date" SortExpression="CustomerSignUpDate" DataFormatString="{0:d}"></asp:BoundField>
            <asp:BoundField DataField="CustomerSubscriptionType" HeaderText="Subscription" SortExpression="CustomerSubscriptionType" Visible="False" />
            <asp:BoundField DataField="CustomerCost" HeaderText="Cost" SortExpression="CustomerCost" Visible="False" />
            <asp:BoundField DataField="CustomerDriver" HeaderText="Driver" SortExpression="CustomerDriver" Visible="False" />
            <asp:BoundField DataField="HowHeard" HeaderText="How Heard" SortExpression="HowHeard" Visible="False" />
            <asp:BoundField DataField="NewBinsRequested" HeaderText="Bins Requested" SortExpression="NewBinsRequested" Visible="False" />
            <asp:TemplateField ShowHeader="False">
                <ItemTemplate>
                    <asp:Button ID="EditButton" runat="server" CausesValidation="false" CommandName="" OnClick="EditButton_Click" Text="Edit" CommandArgument='<%# Eval("CustomerID") %>' />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
        <FooterStyle BackColor="#CCCCCC" />
        <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
        <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
        <SortedAscendingCellStyle BackColor="#F1F1F1" />
        <SortedAscendingHeaderStyle BackColor="#808080" />
        <SortedDescendingCellStyle BackColor="#CAC9C9" />
        <SortedDescendingHeaderStyle BackColor="#383838" />
    </asp:GridView>

ApplyFilter(onSelecting)[还有很多项目,但这是相关的]:

    if (ddlDriver.Text != "Select...")
                {
                    if (!string.IsNullOrEmpty(SqlDataSource1.FilterExpression))
                    {
                        SqlDataSource1.FilterExpression += " AND [CustomerDriver]='{0}'";
                        SqlDataSource1.FilterParameters.Add("@CustomerDriver", ddlDriver.Text);
                    }
                    else
                    {
                        SqlDataSource1.FilterExpression = "[CustomerDriver]='{0}'";
                        SqlDataSource1.FilterParameters.Add("@CustomerDriver", ddlDriver.Text);
                    }
                }
if (!String.IsNullOrEmpty(SqlDataSource1.FilterExpression))
            {
                SqlDataSource1.FilterExpression +=
                    " AND [CustomerStatus] <> 'Inactive' AND [CustomerStatus] <> 'Canceled'";
            }

用于下拉列表的OnSelectedIndexChanged:

protected void ddlDriver_OnSelectedIndexChanged(object sender, EventArgs e)
        {
            CustomersGridView.DataBind();
        }

哦,这是在页面加载中,不确定是否重要:

if (Page.IsPostBack)
            {
                if (SearchTextBox.Text.Length > 0)
                {
                    var searchtext = SearchTextBox.Text + "*";
                    //var ctrlParam = new ControlParameter
                    //    {
                    //        ControlID = "SearchTextBox",
                    //        PropertyName = "Text",
                    //        Name = "Search"
                    //    };
                    var ctrlParam2 = new QueryStringParameter
                        {
                            DefaultValue = "Canceled",
                            QueryStringField = "Canceled",
                            Name = "CustomerStatus",
                            Type = TypeCode.String
                        };
                    var ctrlParam3 = new QueryStringParameter
                        {
                            DefaultValue = "Confirmed",
                            QueryStringField = "Confirmed",
                            Name = "CustomerCancelationStatus",
                            Type = TypeCode.String
                        };
                    SqlDataSource1.SelectParameters.Clear();
                    //SqlDataSource1.SelectParameters.Add(ctrlParam);
                    SqlDataSource1.SelectParameters.Add("Search", TypeCode.String, searchtext);
                    SqlDataSource1.SelectParameters.Add(ctrlParam2);
                    SqlDataSource1.SelectParameters.Add(ctrlParam3);
                    SqlDataSource1.SelectCommand = "SELECT FullText_for_Customers.RANK, [CustomerId], [CustomerStatus], [CustomerGroup], [CustomerFirstName], [CustomerLastName], [CustomerFullName], [CompanyName], [CustomerAddress], [CustomerCity], [CustomerState], [CustomerZipcode], [CustomerFullAddress], [CustomerEmail], [CustomerEmail2], [CustomerPhoneNumber], [CustomerPhoneNumberExt], [CustomerType], [CustomerSubscriptionType], [CustomerCost], [CustomerPaymentMethod], [CustomerPickUpDay], [CustomerPickUpDay2], [CustomerSignUpDate], [CustomerNotes], [CustomerDriver] FROM [Customers] INNER JOIN CONTAINSTABLE(Customers, (CustomerFirstName, CustomerLastName, CustomerFullName, CompanyName, CustomerAddress, CustomerCity, CustomerState, CustomerZipcode, CustomerFullAddress, CustomerEmail, CustomerEmail2, CustomerPhoneNumber, CustomerNotes), @Search) as FullText_for_Customers ON FullText_for_Customers.[KEY]=Customers.CustomerId WHERE ([CustomerStatus] <> @CustomerStatus) AND ([CustomerCancelationStatus] <> @CustomerCancelationStatus) ORDER BY CustomerFirstName ASC";
                }
                else
                {
                    var ctrlParam2 = new QueryStringParameter
                        {
                            DefaultValue = "Canceled",
                            QueryStringField = "Canceled",
                            Name = "CustomerStatus",
                            Type = TypeCode.String
                        };
                    var ctrlParam3 = new QueryStringParameter
                    {
                        DefaultValue = "Inactive",
                        QueryStringField = "Inactive",
                        Name = "CustomerStatus2",
                        Type = TypeCode.String
                    };
                    SqlDataSource1.SelectParameters.Clear();
                    SqlDataSource1.SelectParameters.Add(ctrlParam2);
                    SqlDataSource1.SelectParameters.Add(ctrlParam3);
                    SqlDataSource1.SelectCommand = "SELECT [CustomerId], [CustomerStatus], [CustomerGroup], [CustomerFirstName], [CustomerLastName], [CustomerFullName], [CompanyName], [CustomerAddress], [CustomerCity], [CustomerState], [CustomerZipcode], [CustomerFullAddress], [CustomerEmail], [CustomerEmail2], [CustomerPhoneNumber], [CustomerPhoneNumberExt], [CustomerType], [CustomerSubscriptionType], [CustomerCost], [CustomerPaymentMethod], [CustomerPickUpDay], [CustomerPickUpDay2], [CustomerNotes], [CustomerDriver], [CustomerSignUpDate], [HowHeard], [NewBinsRequested] FROM [Customers] WHERE ([CustomerStatus] <> @CustomerStatus AND [CustomerStatus] <> @CustomerStatus2) ORDER BY CustomerFirstName ASC";
                }
            }
问题暂未有回复.您可以查看右边的相关问题.
1 搜索过滤器在第一次尝试时不起作用

我有一个基于不同颜色标记的搜索过滤器。 如果我将基于颜色进行搜索,它将显示结果,但是当我选择白色标志时,它将显示数据库表中的整个数据。 但是,如果我第一次选择除白色以外的任何其他颜色,它将显示结果。 如果我第二次选择白色标志,那么它会给出正确的结果。 可能是什么原因。 我需要帮助 ...

2 同位素过滤器动画在第一次单击时不起作用

我正在学习HTML5 / CSS,虽然同位素过滤几乎可以正常工作,但是有一个小错误。 默认情况下设置为“全部”,当我单击任何其他选项时,尽管它们已正确过滤,但动画不会触发。 之后,所有动画效果都很好,这只是问题的第一步。 任何帮助或想法将不胜感激。 这是相关的HTML和CSS ...

4 Rally App SDK 2.0rc1-为什么我的组合框仅在第一次单击时才忽略数据存储过滤器?

我有以下代码(草率,我知道...第一个javascript应用程序)。 我正在尝试获取一个组合框,以使用属于给定发行版的功能列表(在第一个组合框中选择)进行填充。 现在几乎所有内容都可以正常运行, 除了我第一次单击功能组合框时,它会加载所有功能并完全忽略过滤器。 即使我先更改发布框,功能框 ...

5 Grep过滤器不会在第一次比赛时停止

我正在尝试使用 从中提取字符串 但它不会给出任何输出。 所以我将代码更改为以下代码,但是得到的输出是整个字符串,而不是直到jpg的第一个匹配项。 我的预期输出是: 谁能提出解决方案? ...

6 Android 分页库在第一次和应用过滤器时加载非常缓慢

在我的应用程序中,我有 1,46,000 条记录,在应用分页库时,数据在 10 - 15 秒后加载。在加载的记录上应用过滤器时,加载至少需要 5-10 秒。在分页之前过滤器操作很安静我的项目中使用的库。 @Dao 类看起来像这样` 视图模型看起来像这样 最后活动是 我尝试了很多来找到 ...

10 reloadRowsAtIndexPaths仅在第一次起作用

我基本上想要在用户点击它时更改单元格的文本。 它是该部分中唯一的单元格。 reloadRowsAtIndexPaths在我第一次运行应用程序时有效,但在此之后却没有。 这是我试图做的事情: 我还打印indexPath以查看用户点击它后是否发生了变化。 控制台上写着: &lt; ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM