0

私は GridView を持っており、 DATASET を介してデータを取り込みます。その列のうち 3 つは 3 つの DropDownList であり、AllowPaging はグリッド ビューに対して true に設定されています。私の問題は、ddl のいずれかの値を選択して検索ボタンをクリックすると、グリッドビューでページングが行われるデータが取得されますが、2 番目のページをクリックすると、ドロップダウンでフィルター処理された値が失われ、再び取得されます。以前のデータセット。

選択した値を保持する方法/アイデアはありますか? ご協力いただきありがとうございます。これで私を助けてください。ドロップダウンの誰かをフィルタリングせずに2番目または3番目のページをクリックすると、その特定のページの関連データが取得されます。唯一の問題は、ドロップダウンで値を選択したときです。

コード:

ボタンのクリック: { string _strBU = BUDropDownList.SelectedValue; 文字列 _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();
}
4

1 に答える 1

1

問題: 次のページをクリックすると、選択したインデックスが 0 に変更されたため、ドロップダウンも再バインドされます。

解決策: その時点で検索ボタンを押すと、3 つのドロップダウンリストの選択した値を保存する必要があります。ドロップダウンはグリッドビュー内にあるため、最初にグリッドビューの行インデックスを取得する必要があります。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
}

それがあなたのために働くことを願っています。

于 2012-07-18T14:17:12.770 に答える