zoukankan      html  css  js  c++  java
  • datagridview样式及各种设置

    1、如何去除datagridview中默认选择的第一行

     初始化时 myDGV.CurrentCell.Selected = false;

    2、如何取消点击列标题排序

                for (int i = 1; i < myDGV.Columns.Count; i++)
                    myDGV.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
    

     3、datagridview的EnableHeadersVisualStyles EnableHeadersVisualStyles设置为false时自己设置的行列标题样式才能生效,否则使用系统默认的样式

     4、DataGridView如何实现自动定位效果,比如我输入个数字N就能马上定位到第N行,而且滚动条也会跟着滚动!

    就象EXCEL的查找功能一样   一旦找到了就定位到相应的位置,如果数据行很多的话,滚动条也会滚到相应的位置。
    就是DataGridView控件有一个FirstDisplayedScrollingRowIndex属性,把需要定位的行index(N)赋值给这个属性之后,DataGridView的显示矩形区域内的第一行就是你说指定的行号了

     5、

    一、是否自动创建列

    1、.AutoGenerateColumns,获取或设置一顺序个值,该值指示在设置 DataSource 或 DataMember 属性时是否自动创建列。

    2、false,使用列表预先定义的列,不根据绑定的数据创建列,允许数据源的字段多于列表的字段,且字段的顺序与列表的显示不同。

    3、true,根据绑定的数据创建列,数据源有几个字段,则列表有几个字段;如果数据源的字段多于列表的字段,需要在列表中设置该字段不显示;注意,字段的顺序应与显示顺序相同,避免调整麻烦。

    4、需要在列表绑定数据前设置。

    二、列表的数据

    1、数据源绑定,举例

                DataTable dtUser = new DataTable();

                String MySQLConnectionString = Class1.strConnectionString;

                SqlConnection MyConnection = new SqlConnection(MySQLConnectionString);

                MyConnection.Open();

                dtUser = new System.Data.DataTable();

                //string MySQL = "Select SY_UserID, UserName, (case when IsStop =0 then '启用' else '停用' end) AS state From SY_User";

                string MySQL = "Select *, (case when IsStop = 0 then '启用' else '停用' end) AS UserState From SY_User";

                SqlCommand MyCommand = new SqlCommand(MySQL, MyConnection);

                SqlDataAdapter MyAdapter = new SqlDataAdapter(MyCommand);

                MyAdapter.Fill(dtUser);

                this.dgvUser.DataSource = dtUser;

                if (MyConnection.State == ConnectionState.Open)

                {

                    MyConnection.Close();

                }

    2、直接在列表中加入数据,举例

    System.Data.DataTable points = new System.Data.DataTable("dtUser");//定义数据表

    dtUser.Columns.Add(new DataColumn("UserID", typeof(int)));//定义各字段及属性

    dtUser.Columns.Add(new DataColumn("UserCode", typeof(string)));

    dtUser.Columns.Add(new DataColumn("UserName", typeof(string)));

    for (int i = 0; i < 10; i++)

    {

         object[] objInfo= new object[3] ;

         objInfo[0] = i;

         objInfo[1] = "Code" + i.ToString();

         objInfo[2] = "Name" + i.ToString();

         dtUser.Rows.Add(objInfo);

    }

    DataView dvDataSource = dtUser.DefaultView;

    dvDataSource.Sort = "SmID";//默认的排序字段,用户指定的排序,在不自定义分页的情况下,由列表控件在点击列表字段标题时自动完成。

    dataGrid1.DataSource = dvDataSource;

     三、设置各列的宽度

    1、按屏幕宽度,设置百分比的例子

    dgvUser.Columns["SY_UserID"].Width = Convert.ToInt32(Convert.ToDouble(this.Width) * 0.15);

    2、设置固定列宽

    dgvUser.Columns["SY_UserID"].Width = 150;

    3、注意

    根据绑定的数据创建列时,要先绑定数据源,才能按照字段名或字段索引号进行列宽等其它设置。

    四、格式化

    1、使用列表预先定义的列时,在列表模版中,可以在样式--format项指定,比较灵活,可以选择已有的样式,也可以输入样式的字符串,感觉不错。

    1)样式结果和格式,可以在.designer.cs文件中查看。

    2)如设置小数位统一为4位,dataGridViewCellStyle3.Format = "N4";

    2、根据绑定的数据创建列

    dgvDatasetRecord.Columns[i].DefaultCellStyle.Format = "N4"; //小数位数固定4位

    技术,具体格式化字符串不可能都背下来,可以先通过练习模版,用自动生成的方法产生,复制出来,加出到正式代码中。

    五、排序方法

    1、自动分页时,排序由列表自动处理,但只能是单字段。

    2、手工分页时,传递排序字段到分页存储过程中,在原始表向临时表导数据时,由原始表先进行排序。

    六、分页 

    1、自动分页时,分页由列表自动处理;数据量小时,用此方法。

    2、手工分页时,传递参数每页记录数、当前显示第几页,到分页存储过程中,由从原始表生成的临时表中,按ID范围取记录;数据量大时,用此方法。

     七、应用说明

    1、不设置字段模版的绑定和格式设置,举例

    1)列表控件不设置列信息

    2)代码中,重要部分举例

    this.dgvDatasetRecord.AutoGenerateColumns = true;      //获取或设置一个值,该值指示在设置 DataSource 或 DataMember 属性时是否自动创建列。

    this.dgvDatasetRecord.DataSource = dtRecordInfo;

    for (int j =0; j < R; j++)//保留四位小数

    {

        if (判断条件...)

           dgvDatasetRecord.Columns[i].DefaultCellStyle.Format = "N4";   }

    }

    3)如何知道是那一列数据要格式化

    A、动态.Columns[i].DataType.ToString() == "System.Double",可以临时判断是哪列。

    B、业务软件,呵呵,列名固定时,用列名可以知道的。

    2、 界面处理的通用要求

    1)增加、修改后,光标仍定位在原行。

    2)删除时,如果原来已经是最后一行,则光标定位在最后一行。

    3)数据量大时,应提供过滤、定位功能。

    4)网络版,考虑多人操作的问题,应提供刷新功能。

  • 相关阅读:
    利用DTrace实时检测MySQl
    改进MySQL Order By Rand()的低效率
    RDS for MySQL查询缓存 (Query Cache) 的设置和使用
    RDS For MySQL 字符集相关说明
    RDS for MySQL 通过 mysqlbinlog 查看 binlog 乱码
    RDS for MySQL Mysqldump 常见问题和处理
    RDS for MySQL Online DDL 使用
    RDS MySQL 表上 Metadata lock 的产生和处理
    RDS for MySQL 如何使用 Percona Toolkit
    北京已成为投融资诈骗重灾区:存好骗子公司黑名单,谨防上当!
  • 原文地址:https://www.cnblogs.com/CCJVL/p/1688758.html
Copyright © 2011-2022 走看看