zoukankan      html  css  js  c++  java
  • ASPxGridview总结(ASPxGridView的增,删,改,查,数据绑定,外观显示,功能设定,分页)

     

    一。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


    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)//循环遍历这一行的每一列的数据

    {

    }

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fangqm/archive/2011/03/06/6227805.aspx

  • 相关阅读:
    [Oracle]快速生成大量模拟数据的方法
    [Oracle]Oracle Fail Safe 与 SQLNET.AUTHENTICATION_SERVICES关系
    [Oracle]构筑TDE 环境的例子
    [Oracle]包含了MVIEW的表领域,在进行导出,表领域改名,再导入后,MVIEW会消失不见。
    [python][spark]wholeTextFiles 读入多个文件的例子
    [Spark][Python]RDD flatMap 操作例子
    Android 仿知乎创意广告
    移动端强大的富文本编辑器richeditor-android
    Python-Flask实现电影系统管理后台
    俄罗斯方块-C语言-详注版
  • 原文地址:https://www.cnblogs.com/iwenwen/p/3128646.html
Copyright © 2011-2022 走看看