0

onload メソッド内でデータベースからバインドしているグリッドビューがあります。

示されているように:

      if (!IsPostBack)
        {
           SqlConnection sqlcon = new SqlConnection(connstring);
           SqlCommand sqlcmd = new SqlCommand("select * from Coffees ORDER BY coffeeName ASC", sqlcon);
           SqlDataAdapter adp = new SqlDataAdapter(sqlcmd);
           DataSet ds = new DataSet();
           adp.Fill(ds);
           GridView1.DataSource = ds.Tables[0];
           GridView1.DataBind();

        }

ユーザーが検索用語でグリッドビューをフィルタリングできるようにしています。私が現在フォローしている問題は、ページを変更するとフィルターが失われることです。

毎回フィルターを再バインドする必要があることを読みましたが、ここで行き詰まります。

これが私のフィルターです:

        private void setGrid(string searchTerm)
    {
        if (IsPostBack)
        {
            string item = DropDownList2.SelectedValue;
            SqlConnection sqlcon = new SqlConnection(connstring);
            SqlCommand sqlcmdd = new SqlCommand("SELECT * FROM Coffees WHERE " + searchTerm + " = '" + item + "'", sqlcon);
            SqlDataAdapter adpp = new SqlDataAdapter(sqlcmdd);
            DataSet dss = new DataSet();
            adpp.Fill(dss);
            GridView1.DataSource = dss.Tables[0];
            GridView1.DataBind();

        }

    }

上記のように、ポストバックを処理する if ステートメントがあります。ポストバックは、まだ頭を悩ませなければならないものですが、これがポストバックの場合、グリッドをリロードしていると思います。これを変更しようとしたので、ポストバックの場合は影響を受けませんが、これはフィルターをすべて無視します。

誰かが私が間違っているところを教えてくれることを願っています。そして、yページすべてにフィルターを適用する方法。

4

1 に答える 1

0

検索語をviewstate変数として保存し、ページインデックス変更メソッドに適用して、それがnullかどうかを確認しました。次に、検索用語でグリッドを再バインドするか、すべての結果を表示する標準バインドを行います。

于 2013-04-06T13:54:34.963 に答える