我在page_load下有一个填充了数据的gridview。此gridview可按字母顺序排序,并具有分页功能。但是,在选择下拉列表值后,我的gridview的排序信息将重置为默认的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
中绑定gridview的方法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];
}
答案 0 :(得分:2)
将绑定代码放在if
方法的Page_Load()
条件下,以便在有回发时不会绑定。
//not post back i.e. first time load
if (!IsPostBack)
{
Session["gridview"] = DataBindByDataSet();
GVPolice.DataSource = Session["gridview"];
GVPolice.DataBind();
}
答案 1 :(得分:0)
我建议您使用Session for Data处理,因此只需在排序功能中更新此会话。因此,在每次排序后,会话都有最新的排序数据集。
在您的排序功能
中Session["gridview"] = Whatever sorted dataset you get.
答案 2 :(得分:0)
我认为你只需要禁用自动回发&amp;防止它刷新。