ASP.NET DevExpress GridView点击下一页提示No data to display问题求助
修复方案
核心问题
- 你的DevExpress BootstrapGridView未开启分页配置,默认分页功能未激活
- 你误用了微软原生ASP.NET GridView的
OnPageIndexChanging分页事件,DevExpress控件有独立的事件体系,导致点击分页时你的数据绑定逻辑从未执行,回发后没有重新加载数据就显示为空
具体修改步骤
1. 修改aspx页面控件代码
给BootstrapGridView添加分页配置,同时绑定DevExpress对应的分页事件,修改后代码如下:
<dx:BootstrapGridView runat="server" ID="GVcity" AutoGenerateColumns="False" OnPageIndexChanged="GVcity_PageIndexChanged"> <SettingsEditing Mode="Inline"></SettingsEditing> <SettingsDataSecurity AllowEdit="true" AllowDelete="true" AllowInsert="true" /> <SettingsBehavior AllowSelectSingleRowOnly="true" AllowSelectByRowClick="true" /> <!-- 新增分页配置,可自行调整PageSize参数修改每页显示条数 --> <SettingsPager PageSize="10" Visible="true"></SettingsPager> <Columns> <dx:BootstrapGridViewTextColumn FieldName="localRegionName" VisibleIndex="0" Caption="Regional"></dx:BootstrapGridViewTextColumn> <dx:BootstrapGridViewTextColumn FieldName="localRegionCode" VisibleIndex="1" Caption="Code"></dx:BootstrapGridViewTextColumn> <dx:BootstrapGridViewTextColumn FieldName="CityName" VisibleIndex="2" Caption="City"></dx:BootstrapGridViewTextColumn> </Columns> <Settings ShowFilterRow="true" ShowFilterRowMenu="true" /> </dx:BootstrapGridView>
2. 修改后台cs代码
替换原来的分页事件方法,修改后代码如下:
protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { this.BindGrid(); } } private void BindGrid() { string constr = ConfigurationManager.ConnectionStrings["conn"].ConnectionString; using (MySqlConnection con = new MySqlConnection(constr)) { // 这里把原来的隐式表连接改成显式JOIN,属于写法优化不影响原有功能 using (MySqlCommand cmd = new MySqlCommand("SELECT tblcity.localRegionCode, tblcity.CityName, tbllocalregion.localRegionName FROM tblcity JOIN tbllocalregion ON tblcity.localRegionCode = tbllocalregion.localRegionCode")) { using (MySqlDataAdapter sda = new MySqlDataAdapter()) { cmd.Connection = con; sda.SelectCommand = cmd; DataTable dt = new DataTable(); sda.Fill(dt); GVcity.DataSource = dt; GVcity.DataBind(); } } } } // 替换原有OnPageIndexChanging方法,对应DevExpress分页事件 protected void GVcity_PageIndexChanged(object sender, EventArgs e) { BindGrid(); }
可选优化
如果你的数据量超过1000条,建议开启DevExpress的服务端分页,避免每次全量拉取数据影响性能,只需在控件属性中添加EnableRowsCache="true",同时修改SQL语句支持分页查询即可。
内容的提问来源于stack exchange,提问作者Rado HT Simarmata
相关产品推荐
相关产品推荐

