美文网首页devexpress我爱编程
DevExpress GridControl使用

DevExpress GridControl使用

作者: oo水桶oo | 来源:发表于2016-10-12 10:47 被阅读334次

    DevExpress GridControl使用

    //不显示内置的导航条。

    gc1.UseEmbeddedNavigator = false;

    //不显示分组的面板

    gv1.OptionsView.ShowGroupPanel = false;

    gv2.OptionsView.ShowGroupPanel = false;

    //自动改变行高适应内容

    gv1.OptionsView.RowAutoHeight = true;

    gv2.OptionsView.RowAutoHeight = true;

    //允许自动合并单元格

    gv1.OptionsView.AllowCellMerge = true;

    //如果主从表中,没有找到从表内容也要显示(默认是不显示的)

    gv1.OptionsDetail.AllowExpandEmptyDetails = true;

    //显示自动筛选行(效果跟Excel的自动筛选差不多)

    gv2.OptionsView.ShowAutoFilterRow = true;

    //使得GridView不能编辑

    gv1.OptionsBehavior.Editable = false;

    gv2.OptionsBehavior.Editable = false;

    //内置编辑器显示的模式

    gv1.OptionsBehavior.EditorShowMode = DevExpress.Utils.EditorShowMode.Click;

    //主从表显示的功能是否可用

    //gv1.OptionsDetail.EnableMasterViewMode = false;

    //如果显示了主从表,每点开个加号,就会显示一个Tabs,里面往往显示了两个面板。

    //事实上没必要这样干的。一般选择关闭。关闭的对象是主GridView的此项属性。

    gv1.OptionsDetail.ShowDetailTabs = false;

    一、显示主从表,这个解决了。

    二、分组显示,这是报表中经常要用到的,GridView的解决方案很简捷,只需将相应列的GroupIndex属性设一下就成了:

    在gridcontrol上击右键,选run designer进入设计模式。在columns栏内点retrieve fields将数据源中所有字段导入进来。

    点需要分组的字段,在其属性栏的groupindex依次设为0,1..,在不需要分组的字段上保持-1不变。

    进入feature browse/summary /group sammary /summary items中增加要分组进行统计的字段。这里要设其fieldname字段名,showingroupcolumnfooter 显示在哪一栏位,sammarytype显示分组后统计的字段是进行sum(求和,求平均,最大值,最小值等)

    在grouping /behavior /grneral /可设两个属性

    autoexpandallgroups 设为true时将所有分组展开,反之折叠。

    showgroupedcolumns是否在网格是显示你分组依据的哪些字段,false为不显示

    同样在feature browse/summary /total sammary 这些不是针对分组,而是针对所有行。在summaryitem中对要处理的列进行设置,主要设置需要处理列的column,summarytype.

    当然设好后要将optionview的showfooter属性设为true,表格底部会出现一summary行。

    补:另有三个属性需要用,我们查询的结果一般是只读的,并且对每一个单元格最好无焦点,故可同时选所有字段,设allowedit为false;allowfocus为false;readonly为true;

    为XtraGrid的GridView加行号。示例代码如下:

    //设置行指示器的宽度(行指示器就是最左边那列什么都不显示的列)

    //默认情况下,如果要在里面显示行号的话,宽度会不足,数字显示不清晰

    //所以要改一下宽度

    gv1.IndicatorWidth = 20;

    private void gv1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)

    {

    if (e.Info.IsRowIndicator && e.RowHandle >= 0)

    {

    e.Info.DisplayText = (e.RowHandle + 1).ToString().Trim();

    }

    }

    效果图如下:

    常用代码:

    //添加分组统计字段

    gridView1.GroupSummary.Add(SummaryItemType.Count, "Product Name", gridView1.Columns["Product Name"]);

    gridView1.GroupSummary.Add(SummaryItemType.Average, "Unit Price", gridView1.Columns["Unit Price"]);

    //设置分组统计字段的显示格式

    ((GridSummaryItem)gridView1.GroupSummary[gridView1.GroupSummary.Count - 1]).DisplayFormat = "AVR={0:c}";

    //设置分组字段

    gridView1.Columns["Discontinued"].GroupIndex = 0;

    //打开所有分组

    gridView1.ExpandAllGroups();

    //为控件画边框

    ControlPaint.DrawBorder3D(e.Graphics,

    r,

    (e.Info.State == DevExpress.Utils.Drawing.ObjectState.Pressed ? Border3DStyle.SunkenOuter

    : Border3DStyle.RaisedInner));

    //焦点单元格的列

    gridview1.FocusedColumn

    //焦点单元格所在行的行号

    gridview1.FocusedRowHandle

    //焦点单元格的值

    gridview1.FocusedValue

    //指定单元格显示的字符串值

    gridview1.GetRowCellDisplayText(int rowHandler,string feildName)

    //指定单元格的值

    gridview1.GetRowCellValue(int rowHandler,string feildName)

    //设置焦点单元格所在行指定列的值

    gridview1.SetFocusedRowCellValue(GridColumn col,object value)

    //设置焦点单元格的值

    gridview1.SetFocusedValue(object value)

    //设置指定单元格的值

    //有了这个函数,就可以手工创建行了。

    gridview1.SetRowCellValue(int rowHandler,string feildName,object value)

    gridview1.SetRowCellValue(int rowHandler,GridColumn col,object value)

    //添加新行的方法

    gv1.AddNewRow();

    foreach (GridColumn col in gv1.Columns)

    {

    //用RowCount-1的办法是不行的

    //gv1.SetRowCellValue(gv1.RowCount-1, col, "aaaaa");

    gv1.SetRowCellValue(gv1.FocusedRowHandle, col, "aaaaa");

    }

    gv1.UpdateCurrentRow();

    //根据绑定的数据源自动产生列

    gv1.PopulateColumns();

    //为列添加下拉列表(加其他类型如日期、UpDown同理)

    RepositoryItemLookUpEdit ri = new RepositoryItemLookUpEdit();

    //ri.PopupWidth = 200;

    ri.DisplayMember = "sc_prna";

    ri.ValueMember = "sc_prno";

    DataTable dt1 = DbHelperSQL.QueryT("select sc_prno,sc_prna from mespb04h");

    ri.DataSource = dt1;

    gv1.Columns["sc_prno"].ColumnEdit = ri;

    相关文章

      网友评论

        本文标题:DevExpress GridControl使用

        本文链接:https://www.haomeiwen.com/subject/gjhiyttx.html