zoukankan      html  css  js  c++  java
  • ASPxGridview使用总结(DEVExpress)

    来源:网络收集

    一。ASPXGridView外观显示
    属性:
    Caption----列的标题(
    KeyFieldName----数据库字段
    SEOFriendly 是否启用搜索引擎优化
    Summary 指定分页汇总信息的格式

    Setting节点的ShowFilterRow=True设置快速查找功能
     
    SettingsBehavior.AllowFocusedRow=true 高亮选中的行,即选中行变色
    SettingsBehavior.AllDragDrop=false禁止拖动标题列头
    SettingsBehavior.AllowSort实现列头点击后是否可以排序

    SettingsPager.ShowEmptyDataRows=True;当数据行为空时,显示空行
    SettingsPager.PageSize 每页显示的记录总数
    AllButton.Text “全部数据显示”按钮的文本
    AllButton.Visible  是否显示“全部数据显示”按钮
    FirstPageBuotton/LastPageButton/NextPageButton/PrevPageButton/ 对应首页、末页、下页、上页,设置同上。
    NumericButtonCount 最小值为1,控制页码显示个数
    protected void ASPxGridView1_PageIndexChanged(object sender, EventArgs e)
        {
            databind();//只需重新绑定数据即可实现上下翻页
        }

    新建的列默认是GridViewDataTextColumn类型,选择工具栏的Change To变更列的类型,可以改变新增或修改时的编辑方式。
    设置日期类型显示格式,在“行为”PropertiesDateEdit--DisplayFormatString--例如:{0:yyyy年MM月}


    当选择了show Group Panel时,FocusedRowChanged事件,重绑定数据,使用时先选中行,再查看
    protected void ASPxGridView1_FocusedRowChanged(object sender, EventArgs e)
        {
            getdata();
        }
     
    禁止某一列进行编辑,该列的行为-EditFormSettings-Visible=False
     
    代码中隐藏编辑列的增加,删除,更新按钮
    (ASPxGridView1.Columns[编辑列] as GridViewCommandColumn).NewButton .Visible= true;
    (ASPxGridView1.Columns[编辑列] as GridViewCommandColumn).DeleteButton.Visible = true;
     (ASPxGridView1.Columns[8] as GridViewCommandColumn).UpdateButton .Visible= true;
     
    每行都有一个CHECKBOX,可以动态选择,只需要这样即可
    <Columns>
                 <dx:GridViewCommandColumnShowSelectCheckbox ="true"VisibleIndex="8"></dx:GridViewCommandColumn>
    ....其它列
    </Columns>
    二。ASPXGridView绑定数据
    ASPxGridView1.KeyFieldName = "ID";//指定主键。直接更新数据和子表绑定 需要用到

    ASPxGridView1.DataSource = dt.defaultView;//指定Grid的数据
    ASPxGridView1.DataBind();  //执行绑定
    注意,如果查询结果字段有别名,编辑该字段时,UnboundType应设为Object

    三。ASPXGridView查找
    过滤数据,查找数据 
    方式一、展开列标题旁边的过滤清单过滤数据(类似Excel的过滤方式)grid.Settings.ShowHeaderFilterButton = true;过滤清单列出了该列出现的所有数据。还可以自定义过滤清单的内容,用法参阅:http://demos.devexpress.com/ASPxGridViewDemos/Filtering/HeaderFilter.aspx

    方式二、在列头显示字段过滤条件输入框 grid.Settings.ShowFilterRow = true; 显示条件判断方式下拉列表grid.Settings.ShowFilterRowMenu = true;

    四删除数据
      protected void ASPxGridView1_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
        {
          e.Cancel = true;//否则,只有刷新页面才能看到删除后的结果
            int id =Convert.ToInt32( e.Keys[0]);//获取ID
          upd.DelDownFileList(id);//从数据库删除记录
        UpLoadFileListBind();//数据表绑定
     
        }
    ASPxGridView自带的删除提示,设两个属性即可:
    SettingsBehavior. ==> ConfirmDelete=True
    SettingsText ==> ConfirmDelete=要提示的字符串

    五.更新
    取值 用e.NewValues[索引]
    并且记得更新数据后 ASPxGridView1.CancelEdit();//结束编辑状态
            e.Cancel = true;
            bind();
    例子: //更新
        protected void ASPxGridView1_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
        {
            Bill.Message m = new Bill.Message();

            //取值 用e.NewValues[索引]
            string id = Convert.ToString(e.Keys[0]);
            string event_date = e.NewValues[1].ToString();
            string event_title = e.NewValues[2].ToString();
            string event_description = e.NewValues[3].ToString();
            string tag = e.NewValues[4].ToString();
            m.Message_update(id, event_date, event_title, event_description, tag);
           
            ASPxGridView1.CancelEdit();//结束编辑状态
            e.Cancel = true;
            bind();
        }

    六排序
    在BeforeColumnSortingGrouping事件中重新绑定一下数据

    七.分页
    PageIndexChanged事件里重新绑定一下数据

    --------------------------------------------------------------------------------

     
     
    1.动态添加非数据绑定列,例子:动态添加行号列
    if (!IsPostBack)
            {
                //动态添加行号非绑定数据
                GridViewDataTextColumn dl = new GridViewDataTextColumn();
                dl.Caption = "行号";
                dl.FieldName = "hh";//该列绑定的字段hh
                dl.UnboundType = DevExpress.Data.UnboundColumnType.String;//非数据绑定类型为字符型
                dl.PropertiesTextEdit.DisplayFormatString = "c";//显示字符的格式
                dl.PropertiesTextEdit.FocusedStyle.ForeColor = System.Drawing.Color.Red;
                dl.VisibleIndex = 0;//设置行号列的索引位置
                ASPxGridView1.Columns.Insert(0, dl);//把行号列插入0之前
               
               
                getdata();
                ASPxGridView1.Caption = "IP为"+GetClientIP()+"的用户,正在查看网银终端更新内容";
       
            }
     
    在CustomUnboundColumnData事件中
     protected void ASPxGridView1_CustomUnboundColumnData(object sender, ASPxGridViewColumnDataEventArgs e)
        {
            if (e.Column.FieldName == "hh" && e.IsGetData)
                e.Value = (e.ListSourceRowIndex + 1).ToString();
        }
     
    2.ASPxComboBox列的相关操作
    简单的方法是
    1.FiledName写主表与此字段有关联外键字段:例如uid
    2.在PropertiesCombobox下面找这几个属性:
    然后在客户姓名的这一列的DataSourceId,给它绑定上我们字表的ObjectDataSource
    在TextField设置字段名称,例如:name
    在ValueField设置名称应该就是字表的主键(也就是主表引用字表的外键),例如:uid
    这样就可以轻松做到,不用写代码,绑定多张表
     
    手写代码的方法来绑定ASPxComboBox
    在aspx中将该列的-行为-PropertiesComboBox-ValuesType设为System.String避免ComboBox出现无法选中的现象
     
    using DevExpress.Web.ASPxGridView;
    using DevExpress.Web.ASPxEditors;

     //在页面加载时,给combox列赋值,这里的workgroupID是在ASPxGridview中的Combox列绑定的字段
            (ASPxGridView1.Columns["WorkgroupID"] as GridViewDataComboBoxColumn).PropertiesComboBox.ValueType = typeof(int);
           
                fangqm.Netbank.Core.groupInfo group = new fangqm.Netbank.Core.groupInfo();
                DataTable dt = group.groupSelectAll();//table
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    int id = Convert.ToInt32(dt.Rows[i][0]);
                    string v= dt.Rows[i][1].ToString();
                    (ASPxGridView1.Columns["WorkgroupID"] as GridViewDataComboBoxColumn).PropertiesComboBox.Items.Add(new ListEditItem(v, id));
                  
                }
    在表格进行更新,添加操作时,e.NewValues[1])即可取到客户端的值,例如:
    model.WorkgroupID = Convert.ToInt32(e.NewValues[1]);
     
    注意应先呈现COMBOX列,后绑定数据,字段绑定是区分大小写的,要和SELECT语句字段名一模一样
     
    3.数据汇总
    汇总计算aspxgridview的所有行求得平均或总和并显示在页脚。

    当settings.showfooter属性设置为True,才显示页脚。

    aspxgridview的汇总条目是放在totalsummary属性里。设置DisplayFormat例如:总计{0]台终端,

    设置FieldName为非绑定字段,SummaryType设为Sum表示计算这一列的和

    4.隐藏编辑列,在DataBound事件中
    protected void ASPxGridView1_DataBound(object sender, EventArgs e)
        {
            if(ASPxGridView1.VisibleRowCount>0)
            {
                //ASPxGridView1.Columns[命令列索引]
                (ASPxGridView1.Columns[4] as GridViewCommandColumn).NewButton.Visible = false;
            }
        }

    --------------------------------------------------------------------------------


    六。AspxGridView常见问题
    A.点Edit或new按钮,Delete出来Update和cancel,编辑完数据后点击Update,出错:“不支持所指定的方法”.解决方法:
    1、确保ASPxGridView已设置了KeyFieldName
    2、确保ASPxGridView已定义了事件 OnRowDeleting, OnRowInserting, OnRowUpdating
    3、后台代码中有对 OnRowDeleting, OnRowInserting, OnRowUpdating 事件的处理。

    2、 绑定主从表(IList)

    List的元素带有List属性(Category.Products),并且需要以Grid嵌套的方式显示。

    1、  选中GridView(gird1),右键菜单选择“编辑模板”—“DetailRow”,页面打开明细数据界面,向DetailRow添加一个新的 ASPxGridView (grid2)显示明细数据,可以设定grid2的Columns相关属性。Grid2.SettingsDetail.IsDetailGrid = true 指定grid2作为从表数据表格。

    2、  增加grid2 DataBinding事件  

    Code
    protected void grid2_DataBinding(object sender, EventArgs e)
        {
            DevExpress.Web.ASPxGridView.ASPxGridView grid = sender as DevExpress.Web.ASPxGridView.ASPxGridView;
            if ((grid != null) && (dict != null))
            {         
                int i = (int) grid.GetMasterRowKeyValue();/*取主表记录的Key,主表grid必须设定KeyFieldName*/
                if (i >= 0)
                {             
                    grid.DataSource = dict.Products;//通过Key定位数据,指定子表数据源           
    }
            }
    }

    3、  右键点击DetailRow,选“结束模板编辑”。修改grid1.SettingsDetail的相关属性

    Bool AllowOnlyOneMasterRowExpanded 默认False,是否只允许主表一行展开。True后展开第二行明细记录时,会关闭上次展开的明细记录。

    Bool ShowDetailButton 是否显示明细按钮,True显示一个“+”在行首

    Bool ShowDetailRow True显示明细数据

    4、 过滤数据

    方式一、展开列标题旁边的过滤清单过滤数据(类似Excel的过滤方式) grid.Settings.ShowHeaderFilterButton = true;过滤清单列出了该列出现的所有数据。还可以自定义过滤清单的内容,用法参阅:http://demos.devexpress.com/ASPxGridViewDemos/Filtering/HeaderFilter.aspx

    方式二、在列头显示字段过滤条件输入框 grid.Settings.ShowFilterRow = true; 显示条件判断方式下拉列表grid.Settings.ShowFilterRowMenu = true;

    5、 用户自定义列显示

    Grid.SettingCustomizationWindow

    Enabled 运行自定义列显示

    PopupHorizontalAlign 列编辑窗水平对齐方式

    PopupVerticalAlign 列编辑窗垂直对齐方式

        通过JavaScript打开列编辑框。

    Code
    <script. type="text/javascript">

    <%-- 变更按钮的标题 --%>
    function UpdateCustomizationWindowValue() {
        var element = document.getElementById("btnCustWindow");
        if(element == null) return;
        element.value = (grid.IsCustomizationWindowVisible() ? "Hide" : "Show") + " Customization Window";
    }
    <%-- 显示自定义列编辑窗--%>
    function ShowHideCustomizationWindow() {
        if(grid.IsCustomizationWindowVisible())
            grid.HideCustomizationWindow();
        else grid.ShowCustomizationWindow();       
        UpdateCustomizationWindowValue();
    }
    </script>
    <input id="btnCustWindow" type="button" value="Show Customization Window" nclick="ShowHideCustomizationWindow();"/>

    <dxwgv:ASPxGridView ID="gird"…………………….>
    …………………………..
    <ClientSideEvents CustomizationWindowCloseUp="function(s, e) { UpdateCustomizationWindowValue(); }" />
    </dxwgv:ASPxGridView>

    小技巧:
    AspxGridView 在绑定数据的时候,如果数据列的类型是日期型,这时应该用“GridViewDataColumn”而不应该用 “GridViewDataTextColumn”,这样的话,数据显示出来的格式就如“1900-01-01",而不是"1900-01-01 0:00:00".

    AspxGridView中查找控件不能像GridView中一样用FindControl,而应该用 FindRowCellTemplateControl方法。

    应 该彻底放弃Response.Write()方法来输出字符中,如果页面中调用了Response.Write方法,会导致AspxGridView的客 户端排序功能失去控件,具体表现为:点击排序时,显示loading,然后就没有反应了,一直loading下去,不会完成排序操作。

    利用ASPxGridViewExporter导出aspxgridview中的数据时,如果有数据列,虽然我们可以利用
    <PropertiesDateEdit DisplayFormatString="{0:yyyy-MM-dd}">

      </PropertiesDateEdit>来格式化aspxgridview的日期列显示样式,但是我们却无法控制利用 ASPxGridViewExporter导出后的excel文件中的样式,这时,导出的excel文件中,日期列的显示格式为数据库中 aspxgridview数据源中日期列的格式。所以如果想控制导出后excel日期列的格式,必须从aspxgridview的数据源下手,在数据源中 格式化日期列,就可以达到格式化导出后excel文件日期列格式的目的了
    四:导出ASPxGridView的数据
    添加一个ASPxGridViewExporter控件到Page,设置GridViewID为需要导出数据的aspxgridview,调用以下方法实现导出。
    ASPxGridViewExporter1.WriteXlsToResponse()
    ASPxGridViewExporter1.WriteCvsToResponse()
    ASPxGridViewExporter1.WritePdfToResponse()
    ASPxGridViewExporter1.WriteRtfToResponse()
    关于导出EXCEL日期格式,操作EXCEL,设置单元格为相应的格式即可
    1.遍历主键列中的所有数据.

    List<object> keyValue = AspxGridView1.GetSelectedFieldValues("kid");

    string str;

    foreach(object key in keyValue)

    {

        str = key.ToString();
    }
    2.动态选择某一行.

    //n为要选择的行数

    AspxGridView1.Selection.SetSelection(n,true);


    3.获取所有选择行中的数据.这里要注意去这里查看
    http://space.itpub.net/?uid-23109131-action-viewspace-itemid-676010

                                    <dx:GridViewDataTextColumn Caption="序号" VisibleIndex="1" Width="5%">
                                        <EditFormSettings Visible="False" />
                                    </dx:GridViewDataTextColumn>


    4.问题:当AspxGridView的单元格中包含超链接按钮时,AspxGridView排序后引起超链接错位.

    解决方案:设置超链接按钮的属性  EnableViewState=false;

    5.根据某行的数据,动态设置选择复选框不可编辑,及动态设置行背景色.

    protected void AspxGridView1_HtmlRowPrepared(object sender,ASPxGridViewTableRowEventArgs e)

    {

          //判断bomcode是否为空.

      if(e.GetValue("bomcode").ToString().Trim() == "")

        {

              //设置选择复选框不可编辑  

              e.Row.Cell[0].Enabled = false;

              //将背景色设置为浅灰色

        e.Row.BackColor = Color.LightGray;


        }
    }

    //表中有个链接地址,实现点链接地址下载文件,引用命名空间DevExpress.Web.ASPxGridView;
        //如果不想动态绑定,只需要设置列的FieldName为链接址址字段,TextField为显示链接名称的字段即可
        protected void ASPxGridView1_Init(object sender, EventArgs e)
        {
            GridViewDataHyperLinkColumn colLink = new GridViewDataHyperLinkColumn();//实例化一个超链接列
            colLink.Caption = "下载吧";//设置列头
            colLink.PropertiesHyperLinkEdit.Text = "这是个链接";//显示链接的名称
            colLink.PropertiesHyperLinkEdit.TextField = "LinkName";//显示链接名称要绑定的字段       
            colLink.FieldName = "LinkURL";//该列绑定的字段
            colLink.PropertiesHyperLinkEdit.NavigateUrlFormatString="{0}";//链接地址就是该列绑定的字段

            colLink.Visible = true;
            colLink.Width = 200;
            ASPxGridView1.Columns.Add(colLink);//把该列添加到ASPxGridview

        }

     
    using System.Collections.Generic;

    //取得当前控件值的集合 直接寻找控件的ID

    List <object> keyValues = this.GridViewmethod.GetSelectedFieldValues("F_XXX");//控件的ID

    foreach (object key in keyValues)//循环遍历出来

    {

    }

    2.在AspGridView取得某一行

    List <object> keyValues = this.GridViewmethod.GetCurrentPageRowValues("F_xxxxx");//F_xxxxx是主键的值

    foreach (object key in keyValues)//循环遍历这一行的每一列的数据

    {

    }

    另外一个DEV控件的资料使用方法连接:http://www.cnblogs.com/goole/category/294930.html

  • 相关阅读:
    教程:在 Visual Studio 中开始使用 Flask Web 框架
    教程:Visual Studio 中的 Django Web 框架入门
    vs2017下发现解决python运行出现‘No module named "XXX""的解决办法
    《sqlite权威指南》读书笔记 (一)
    SQL Server手工插入标识列
    hdu 3729 I'm Telling the Truth 二分图匹配
    HDU 3065 AC自动机 裸题
    hdu 3720 Arranging Your Team 枚举
    virtualbox 虚拟3台虚拟机搭建hadoop集群
    sqlserver 数据行统计,秒查语句
  • 原文地址:https://www.cnblogs.com/xiaofengfeng/p/2180756.html
Copyright © 2011-2022 走看看