[英]Rows.Count with dropdown list
使用.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事件,這就是為什么計數始終落后一回發的原因。
您可以嘗試在以后的Page事件中更新計數,例如OnPreRender(object sender, EventArgs e)
或在Grid View的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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.