1

以下の画像のように機能する新しい GridView MultiFilter コントロール ( CompositeControl ) を開発しました。

マルチフィルター画像

コントロールのプロパティに ViewState を使用しているため、ポストバック後もすべての値が保持されます。ページが再びロードされたときにプロパティをコントロールにロードできるように、リダイレクトする前にコントロール プロパティをセッションに保存したいと考えています。

これを達成する方法について何か提案はありますか?

4

3 に答える 3

2

このリスト ページでは、次の 2 つのことを行う必要があります。

  • (1)ページロード
  • (2)検索クリック

そして、1つの詳細(リダイレクトされた)ページ:

  • (3)リストページに戻るときにクエリ文字列を渡す

(1) ページの読み込み中に、通常のデータまたは検索された (詳細ページから戻る) データの読み込みを決定する

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
    if (Request.QueryString["back"] != null)
        bindDataFirst();
// same data load logic as present
    else
            bindDataForBack();
// you come back from detail page hence bind search & grid data
}

private void bindDataForBack()
    {

strName = Session["SearchName"] == null ? "" : Session["SearchName"].ToString();
// check session search conditions & data and bind

//also bind grid by respective search parameters & search options (top side)

(2)検索 クリック 検索データをセッションに保存

public void btnSearch_Click(object sender, System.EventArgs e)
    {

Session["SearchName"] = strName;// store search data into session variables

//bind grid by respective search parameters

(3) リダイレクトされた (詳細) ページで、次のような [戻る] ボタンを設定します。

public void btnBack_Click(object sender, System.EventArgs e)
    {
Response.Redirect("ListPage.aspx?back=1");

これがお役に立てば幸いです。これを1つのテキストボックスとグリッドで実装してから、現在のシナリオで試してみることをお勧めします.

これで問題が解決する場合は、この回答を有用とマークしてください。

于 2013-10-11T05:29:48.093 に答える
0

フォーム送信を使用して別のページにリダイレクトできる場合は、ページのアクション属性を使用して必要なページにフォームを投稿できます。このようにして、すべてのコントロールの値が Request["KEY NAME HERE"] で利用可能になります

<form action="anotherpage.aspx" id="frmData">
<!-- YOUR CONTROLS HERE -->
<input type="submit" value="Submit" />
</fomr>

JSを使用してフォームを送信することもできます

$("#frmData").submit();
于 2013-10-11T05:29:20.550 に答える
0

ViewState に割り当てるのとほとんど同じ方法で、Session にデータを割り当てることができます。

ViewState と同じように、キーと値のディクショナリです。

元:

Session["someKey"] = "An arbitrary value";
于 2013-10-11T04:37:40.787 に答える