• 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)网络版,考虑多人操作的问题,应提供刷新功能。

  • 相关阅读:
    在CentOS 8 上 部署 .Net Core 应用程序
    Asp.Net Core 查漏补缺《一》 —— IStartFilter
    接口相关数据日志打印
    退款
    识别身份证
    生成二维码
    打造一款简单易用功能全面的图片上传组件
    Redis过期策略+缓存淘汰策略
    Redis主从复制
    .net 平台常用框架
  • 原文地址:https://www.cnblogs.com/CCJVL/p/1688758.html
Copyright © 2020-2023  润新知