2

page_load の下にデータで満たされたグリッドビューがあります。このグリッドビューはアルファベット順に並べ替えることができ、ページング機能を備えています。ただし、ドロップダウンリストの値を選択すると、グリッドビューの並べ替えられた情報がデフォルトの page_load データにリセットされます。

更新パネルとトリガーを追加しましたが、まだ機能しません。私はすべてのSOスレッドを検索し、すべてがトリガーと更新パネルをアドバイスしました。また、ドロップダウン リストで自動ポスト バックを有効にします。ddl の ID も正しいです。

<asp:UpdatePanel ID="UpdatePanel1" runat="server" >
<ContentTemplate>

      **GridView**      

    *dropdownlist category*
    *search textbox*
    *search button*


</ContentTemplate>
<Triggers> 
<asp:AsyncPostBackTrigger ControlID="ddlCategory" EventName="SelectedIndexChanged" /> 
</Triggers> 
</asp:UpdatePanel>

</asp:Content>

ddl 値の選択によって、ソートされた ddl の値が page_load にあるデフォルトのデータにリセットされないようにする方法を教えてください。

これは、page_loadでグリッドビューをバインドする方法です

Session["gridview"] = DataBindByDataSet();

GVPolice.DataSource = Session["gridview"];
GVPolice.DataBind();

これはデータテーブルメソッドです

private DataTable DataBindByDataSet()
    {

        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

                conn.Open();

                DataSet ds = new DataSet();

                SqlDataAdapter da = new SqlDataAdapter(*sql command*);
                da.Fill(ds);

                conn.Close();

                 return ds.Tables[0];               

   }
4

3 に答える 3

2

ポストバックがあったときにバインドしないように、メソッドに以下のif条件でバインド コードを配置します。Page_Load()

//not post back i.e. first time load
if (!IsPostBack)
{
    Session["gridview"] = DataBindByDataSet();

    GVPolice.DataSource = Session["gridview"];
    GVPolice.DataBind();
}
于 2013-10-30T08:23:55.143 に答える