行.计数与下拉列表

本文关键字:下拉列表 | 更新日期: 2023-09-27 17:51:17

使用。net 4和c#,我试图从数据库中获取数据到GridView并显示返回的行数。我也有一个下拉列表用作SqlDataSource中的ControlParameters来过滤结果。

这在初始页面加载时工作得很好,但是当我从下拉菜单中选择一些内容时,结果会被过滤,但行数不会改变。当我从下拉菜单中选择另一项时,行数得到更新,但与前一个值一致。

        <h5> Showing <asp:Label ID="WOs_count" runat="server" Text="Label"></asp:Label> Work Orders.</h5>  
        <asp:DropDownList 
            ID="DropDownList1" 
            runat="server" 
            AutoPostBack="True">
            <asp:ListItem Value="%">All requests</asp:ListItem>
            <asp:ListItem Value="BBTeam">BB Team</asp:ListItem>
        </asp:DropDownList>

Select语句:

 <asp:SqlDataSource 
    ID="WorkList" 
    runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="SELECT TASKS.WOID AS wo_id, Tasks.Completed AS 'Completed Date', Tasks.Respons AS 'Technician', FROM Tasks WHERE (Tasks.Completed>=DATEADD(day,-60,GETDATE())OR Tasks.Completed IS NULL)  AND (Tasks.Respons LIKE @Respons)  ">
    <SelectParameters>
        <asp:ControlParameter name="Respons" ControlID="DropDownList1" PropertyName="SelectedValue"/>
    </SelectParameters>
</asp:SqlDataSource>

后面的代码是:

        protected void Page_Load(object sender, EventArgs e)
    {
        WOs_count.Text = WO_list.Rows.Count.ToString();
    }

我对。net完全不熟悉,所以如果我错过了一些明显的东西,我不会感到惊讶。

行.计数与下拉列表

我认为你的问题是Page_Load事件在网格重新绑定到数据之前触发,这就是为什么计数总是落后于一个回发。

您可以尝试在以后的页面事件中更新计数,如OnPreRender(object sender, EventArgs e)或更新您的网格视图上的DataBound事件中的计数…

添加到你的ASPX:

 <asp:GridView ID="WO_list" runat="server" OnDataBound="WO_list_DataBound" ... />

,然后添加到后面的代码(c#):

protected void WO_list_DataBound(EventArgs e){ WOs_count.Text = WO_list.Rows.Count.ToString(); }

试一试,让我知道两者是否都有效。

这应该可以帮你解决这个问题。

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {  
        WOs_count.Text = WO_list.Rows.Count.ToString();
    }