我有一个在 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 中绑定(bind) 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];
}
最佳答案
将绑定(bind)代码放在Page_Load()
方法的下面if
条件中,这样有回发时就不会绑定(bind)。
//not post back i.e. first time load
if (!IsPostBack)
{
Session["gridview"] = DataBindByDataSet();
GVPolice.DataSource = Session["gridview"];
GVPolice.DataBind();
}
关于c# - 选择下拉列表时无法阻止 gridview 刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19676627/