2013-01-11 81 views
1

使用.NET 4和C#我想從數據庫中的數據到GridView和顯示的行數返回。我還有一個下拉列表,用作SqlDataSource中的ControlParameters來過濾結果。Rows.Count與下拉列表

這適用於初始頁面加載罰款,但是當我從下拉的結果進行過濾的東西,但行數不會改變。當我從下拉菜單中選擇另一個項目時,行數會更新,但數字正確的是前一個值。

 <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> 

選擇語句:

<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,如果我這樣也不會感到驚訝錯過了明顯的東西

回答

1

我覺得你的問題是,在Page_Load事件被射擊前格柵重新綁定到數據,這就是爲什麼計數總是一個回傳後面。

你可以嘗試更新計數器在以後的頁面事件,如OnPreRender(object sender, EventArgs e)或者在您的網格視圖的數據綁定事件更新計數器...

添加到您的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(); } 

試試這個,讓我知道如果任一/兩的工作。

+0

感謝馬特,但仍然沒有運氣。第一個不會改變任何東西;第二給我一個錯誤:「'編譯器錯誤消息:CS1061:‘ASP.bb_systems_counter_aspx’不包含一個定義爲‘WO_list_DataBound’和沒有擴展方法‘WO_list_DataBound’接受型的第一參數‘ASP.bb_systems_counter_aspx’可以發現(你是否缺少使用指令或程序集引用?)'' – GRegorious13

+0

我明白了。我相信我有一個錯字。對不起,但現在已經修好了。事件中的外殼是錯誤的...所以你試圖覆蓋OnPreRender和兩段代碼來綁定該事件? – Matt

+0

你能發佈更多的ASPX嗎?至少asp:GridView打開服務器標籤?另外,當我的編輯顯示時,嘗試將WO_list_DataBound上的訪問修飾符從private更改爲protected。 – Matt

-1

這應該爲您解決它。

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

你爲什麼要把它放在SelectedIndexChanged上? – ChrisBint

+0

是的,我也考慮過了,並且已經嘗試過了,但是不,這不能解決。我也嘗試在Page.IsPostBack上運行計數,但結果相同。 – GRegorious13