找回密码
 立即注册

QQ登录

只需一步,快速开始

zhu_99031

银牌会员

9

主题

29

帖子

3586

积分

银牌会员

积分
3586

活字格认证

zhu_99031
银牌会员   /  发表于:2012-7-20 09:08  /   查看:5399  /  回复:1
一个页面 上一次性加载300行, 十列 , 有四列是下拉选择框    页面加载是很慢.   不知道 有没有优化的地方,  下面是代码
   
        #region 下拉框
        List<tblDictionary> listD = new List<tblDictionary>();
        ComboBoxCellType cmb = new ComboBoxCellType();
        listD = GetDataDetail("水平向代码");
        cmb.DataSource = listD;
        cmb.DataMember = "请选择";
        cmb.DataTextField = "fldname";
        cmb.DataValueField = "fldkey";
        cmb.UseValue = true;
        cmb.AutoPostBack = false;
        cmb.ShowButton = true;
        this.FpSpread1.ActiveSheetView.Columns[6].CellType = cmb;

        cmb = new ComboBoxCellType();
        listD = GetDataDetail("垂直向代码");
        cmb.DataSource = listD;
        cmb.DataTextField = "fldname";
        cmb.DataValueField = "fldkey";
        cmb.UseValue = true;
        cmb.AutoPostBack = false;  
        cmb.ShowButton = true;
        this.FpSpread1.ActiveSheetView.Columns[7].CellType = cmb;

八,九列 同上

        this.FpSpread1.ActiveSheetView.Columns[5].Width = 200;
        this.FpSpread1.ActiveSheetView.Columns[5].Locked = true;
        this.FpSpread1.ActiveSheetView.Columns[10].Visible = false;
        #endregion

for (int i = 0; i < lisvw.Count; i++)
            {
                this.FpSpread1.ActiveSheetView.SetValue(i,0,lisvw.fldSampleCode);
                this.FpSpread1.ActiveSheetView.SetValue(i, 1, lisvw.fldBottleCode);
                this.FpSpread1.ActiveSheetView.SetValue(i, 2, lisvw.fldSamplingAddress);
                this.FpSpread1.ActiveSheetView.SetValue(i, 3, lisvw.fldSamplingDate);
                this.FpSpread1.ActiveSheetView.SetValue(i, 4, lisvw.fldSamplingHour);
                this.FpSpread1.ActiveSheetView.SetValue(i, 5, lisvw.flditemName);
                this.FpSpread1.ActiveSheetView.SetValue(i, 6, lisvw.fldSAMPH);
                this.FpSpread1.ActiveSheetView.SetValue(i, 7, lisvw.fldSAMPR);
                this.FpSpread1.ActiveSheetView.SetValue(i, 8, lisvw.fldTideTime);
                this.FpSpread1.ActiveSheetView.SetValue(i, 9, lisvw.fldTideFlood);
                this.FpSpread1.ActiveSheetView.SetValue(i, 10, lisvw.fldItem);
            }

1 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-7-20 10:46:00
沙发
回复 1楼zhu_99031的帖子
你好,可以尝试进行以下处理:
1、减少每页显示的数据量,将300*100改成100*100甚至50*100
2、使用Spread带的按需加载功能,主要是设置 AllowLoadOnDemand 等属性,详细使用方法请参考Spread帮助文档中的【Allowing Load on Demand】章节

  1. FpSpread1.Sheets[0].RowCount = 40;
  2. FpSpread1.Sheets[0].AllowLoadOnDemand = True;
  3. FpSpread1.Sheets(0).PageSize = 40;
  4. FpSpread1.Sheets[0].LoadInitRowCount = 10;
  5. FpSpread1.Sheets[0].LoadRowIncrement = 10;
  6. long i;
  7. for (i = 1; i &lt;= 20; i++)
  8. {
  9. FpSpread1.Sheets[0].Cells[i, 0].Value = i;
  10. }
复制代码

3、使用Spread的虚拟分页功能,主要是设置AllowVirtualScrollPaging 属性,详细使用方法请参考Spread帮助文档中的【AllowVirtualScrollPaging 】

  1. FpSpread1.Sheets[0].AllowVirtualScrollPaging = true;
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部