行.计数与下拉列表
本文关键字:下拉列表 | 更新日期: 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();
}