2012-07-18 47 views
0

我有一個GridView,我通過數據集填充它。它的三列是三個DropDownLists,並且對於網格視圖,AllowPaging設置爲true。我的問題是,當我選擇任何一個ddl的值,然後點擊serach按鈕,我會在gridview上獲得paginig的數據,但是當我點擊第二頁時,我鬆開了過濾下來的calue,並且再次獲得早先的數據集。多維下拉列表和頁面上的值

是否有任何方法/想法來堅持選定的值?謝謝你的幫助。 請你幫我解決這個問題。如果我不過濾掉任何一個下拉菜單,然後點擊第二或第三頁,我就會得到該特定頁面的相關數據。唯一的問題是當我在下拉列表中選擇了一個值。

代碼:

按鈕點擊: { 串_strBU = BUDropDownList.SelectedValue; string _strOU = OUDropDownList.SelectedValue;

string _strPortalID = !string.IsNullOrEmpty(TxtEmpPortalID.Text.Trim()) ? TxtEmpPortalID.Text.Trim() : string.Empty; 
string _strRU = RUDropDownList.SelectedValue; 
string _strMngrPortalID = System.Web.HttpContext.Current.User.Identity.Name.ToString(); 
_strMngrPortalID = _strMngrPortalID.Substring(4, 6); 

      SqlConnection sqlConnection = new SqlConnection(); 
      sqlConnection.ConnectionString = "server=;uid=;pwd=;database=HROrgchartDB"; 
      sqlConnection.Open(); 

      SqlCommand sqlEmployeeDetailsCommand = new SqlCommand(); 
      sqlEmployeeDetailsCommand.Connection = sqlConnection; 
      sqlEmployeeDetailsCommand.CommandText = "EmployeeSearch"; 
      sqlEmployeeDetailsCommand.CommandType = CommandType.StoredProcedure; 
      sqlEmployeeDetailsCommand.Parameters.Add(new SqlParameter("@BU", SqlDbType.VarChar, 50)).Value = _strBU; 
      sqlEmployeeDetailsCommand.Parameters.Add(new SqlParameter("@OU", SqlDbType.VarChar, 50)).Value = _strOU; 
      sqlEmployeeDetailsCommand.Parameters.Add(new SqlParameter("@PORTALID", SqlDbType.VarChar, 6)).Value = _strPortalID; 
      sqlEmployeeDetailsCommand.Parameters.Add(new SqlParameter("@RU", SqlDbType.VarChar, 50)).Value = _strRU; 
      sqlEmployeeDetailsCommand.Parameters.Add(new SqlParameter("@ManagerPortalID", SqlDbType.VarChar, 6)).Value = _strMngrPortalID; 

      SqlDataAdapter da = new SqlDataAdapter(sqlEmployeeDetailsCommand); 
      DataSet ds = new DataSet(); 
      da.Fill(ds); 
      if (ds != null) 
      { 
       // gvAddorRelease.Visible = true; 
       gridReportees.DataSource = ds; 
       Cache["D2"] = ds; 
       gridReportees.PageIndex = 0; 
       gridReportees.DataBind(); 
      } 
      else 
      { 


      } 
      sqlConnection.Close(); 
     } 
} 

事件分頁:

gridReportees_PageIndexChanging: 
{ 
gridReportees.PageIndex = e.NewPageIndex; 
DataSet ds = new DataSet(); 
ds=(DataSet)Cache["D2"]; 
gridReportees.DataSource= ds; 
gridReportees.DataBind(); 
} 
+0

plz顯示您的代碼 – 2012-07-18 09:28:16

+0

保護無效Button2_Click(對象發件人,EventArgs e) – 2012-07-18 09:33:48

+0

編輯你的問題併發布完整的下拉和gridview的代碼。 – 2012-07-18 09:35:32

回答

1

問題: 當你點擊下頁,下拉菜單還重新綁定由於其中有選擇的指數變爲0

解決方案: 當您按下搜索按鈕時,您必須保存3個下拉列表的選定值。下拉列表存在於你的gridview中,所以首先你必須得到gridview行索引。您可以從gridveiw_selectedindexchange事件中獲取行索引。 [提示]

ViewState["svalue1"] = ((DropDownList) gv.Rows[index].FindControl("dropdownlistID")).Text; 

// also get the selected values of other 2 dropdowns 

現在得到selectedvalues後,您必須將dropdwonlist.selected值設置爲我們保存在ViewState中的值。

gridReportees_PageIndexChanging() 
{ 
    // After binding the grid 
    // in this metho set the dropdown seleted value 
    // example get a reference of your dropdown 
    DropDownList ddl1 = (DropDownList) gv.Rows[index].FindControl("dropdownlistID"); 
    ddl.SelectedValue = ViewState["svalue1"].ToString(); 
    // follow the same steps for other 2 dropdownlists 
} 

希望它適合你。

+0

我跟着但我變空爲 ddl.SelectedValue =的ViewState [ 「svalue1」]。的ToString(); 在頁面indexchanging我需要與過濾器(將加載一個數據集)分頁,如果有一個過濾器,我需要加載過濾數據集和分頁工作,以及此 – 2012-07-19 04:56:17

+0

@tulajaramkulkarni你呢正確保存viewstate中的值? – 2012-07-19 06:14:39

+0

我想我想通了...我將從下拉列表中選擇索引更改和從gridview選擇indexchange nit的視圖狀態值。 反正感謝您的支持 – 2012-07-19 09:57:04

相關問題