DataTable用法详解

159 篇文章 167 订阅

一、表格的数据过滤,但是不改变表格列的结构
1)

DataTable dt = new DataTable();
dt.Columns.Add("姓名");
dt.Columns.Add("年龄");
int rowCount1 = 4;
for (int i = 0; i < rowCount1; i++)
{
    DataRow dataRow = dt.Rows.Add();
    if (i == 0)
    {
        dataRow[0] = "小王";//可以使用索引来访问行
        dataRow["年龄"] = i.ToString();//可以使用列名来访问行
    }
    else
    {
        dataRow[0] = "小李";
        dataRow["年龄"] = i.ToString();
    }
}
DataTable dt2 = dt.Select("年龄>1").CopyToDataTable(); //对行进行操作,如果不是字符串则不用单引号,CopyToDataTable()是将datarow[]转成了表格。
DataTable dt3 = dt.Select("姓名='小李'","年龄 desc").CopyToDataTable();//对行进行操作,并且,第二个参数是对列进行排序,desc是降序,asc是升序
DataTable dt4 = dt.Select("姓名='小李'", "年龄 desc",DataViewRowState.Added ).CopyToDataTable();//对行进行操作,并且指定被操作的行的类型
DataRow [] DR = dt.Select("姓名='小李'", "年龄 desc");


dataGridView1.DataSource = dt;
dataGridView2.DataSource = dt2;
dataGridView3.DataSource = dt3;
dataGridView4.DataSource = dt4;

在这里插入图片描述
2)获取满足某个条件的某个单元格的值

DataTable dt = new DataTable();
            dt.Columns.Add("姓名");
            dt.Columns.Add("年龄");
            int rowCount1 = 4;
            for (int i = 0; i < rowCount1; i++)
            {
                DataRow dataRow = dt.Rows.Add();
                if (i == 0)
                {
                    dataRow[0] = "小王";//可以使用索引来访问行
                    dataRow["年龄"] = i.ToString();//可以使用列名来访问行
                }
                else
                {
                    dataRow[0] = "小李";
                    dataRow["年龄"] = i.ToString();
                }
            }


            var nameVal = dt.AsEnumerable().FirstOrDefault(item => item.Field<string>("姓名") == "小李").Field<string>("年龄");//先获取满足某个条件的某一行,然后再次根据列名筛选出某一个单元格的值
            Console.WriteLine(nameVal);

二、表格的数据过滤,但是改变表格列的结构

DataTable dt = new DataTable();
            dt.Columns.Add("姓名");
            dt.Columns.Add("年龄");
            int rowCount1 = 4;
            for (int i = 0; i < rowCount1; i++)
            {
                DataRow dataRow = dt.Rows.Add();
                if (i == 0)
                {
                    dataRow[0] = "小王";//可以使用索引来访问行
                    dataRow["年龄"] = i.ToString();//可以使用列名来访问行
                }
                else
                {
                    dataRow[0] = "小李";
                    dataRow["年龄"] = i.ToString();
                }
            }
            dataGridView1.DataSource = dt.DefaultView.ToTable(false, new string[] { "姓名" });
            dataGridView5.DataSource = dt.DefaultView.ToTable(true, new string[] { "姓名" });
            dataGridView2.DataSource = dt.DefaultView.ToTable(false, new string[] { "姓名", "年龄" });
            dataGridView4.DataSource = dt.DefaultView.ToTable(false, new string[] { "年龄", "姓名" });
            dataGridView3.DataSource = dt.DefaultView.ToTable(false, new string[] { "年龄" });

在这里插入图片描述
从上图可以看出,通过以上操作可以调换列的左右排列顺序,或者减少列的个数,或者对列的元素进行去重操作。
三、行状态的监控

 DataTable dataTable = new DataTable("dataTable");
            DataColumn dataColumn = new DataColumn("dataColumn");
            dataTable.Columns.Add(dataColumn);

            // Add ten rows.
            DataRow dataRow;
            dataRow = null;
            for (int i = 0; i < 3; i++)
            {
                dataRow = dataTable.NewRow();
                dataRow["dataColumn"] = "item " + i;
                Console.WriteLine(dataRow.RowState);
                dataTable.Rows.Add(dataRow);//添加行
            }
            PrintRowState(dataTable);

            dataTable.AcceptChanges();
            PrintRowState(dataTable);

            dataTable.Rows[0][dataColumn] = "hello";
            PrintRowState(dataTable);
  /// <summary>
        /// 输出行状态
        /// </summary>
        /// <param name="dataTable"></param>
        private void PrintRowState(DataTable dataTable)
        {
            int rows = dataTable.Rows.Count;
            for (int i = 0; i < rows; i++)
            {
                DataRow dataRow = dataTable.Rows[i];
                Console.WriteLine(dataRow.RowState);
            }
        }

输出:

Detached//行被创建但是没有添加到表格中
Detached
Detached
Added//行被添加到表格中,但是之后没有调用AcceptChanges方法
Added
Added
Unchanged//行调用AcceptChanges方法之后,尚未更改行的值
Unchanged
Unchanged
Modified//更改行的值,但是之后没有调用用AcceptChanges
Unchanged
Unchanged

四、判断表格列的类型

DataTable dt = new DataTable();
// 假设DataTable已经填充了数据
foreach(DataColumn col in dt.Columns)
{
Type dataType = col.DataType;
// 在这里处理每个列的数据类型
// …
}

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,关于Flutter中的DataTable使用详解,我可以为您提供以下内容: 1. DataTable简介 DataTable是Flutter中的一个控件,它可以用于显示表格数据。DataTable是由多个TableRow组成的,每个TableRow代表一行数据,每个TableCell代表一个单元格。 2. DataTable使用方法 a. 创建一个DataTable 创建一个DataTable需要使用DataTable构造函数,并传入两个必要参数:columns和rows。 columns代表表格的列,它是一个列表,每个元素都是一个DataColumn对象。DataColumn有两个必要参数:label和tooltip,分别代表列标题和列提示。 rows代表表格的数据,它是一个列表,每个元素都是一个DataRow对象。DataRow有两个必要参数:cells和selected,分别代表行数据和是否选中。 b. 设置DataTable属性 DataTable还有一些可选属性,可以用于自定义表格的样式和行为。例如: sortColumn:可以设置表格默认排序的列。 sortAscending:可以设置表格默认排序的顺序。 onSelectAll:可以设置全选和取消全选的回调函数。 3. DataTable示例 下面是一个简单的DataTable示例: ``` DataTable( columns: [ DataColumn(label: Text('Name')), DataColumn(label: Text('Age')), DataColumn(label: Text('Gender')), ], rows: [ DataRow(cells: [ DataCell(Text('Alice')), DataCell(Text('18')), DataCell(Text('Female')), ]), DataRow(cells: [ DataCell(Text('Bob')), DataCell(Text('20')), DataCell(Text('Male')), ]), DataRow(cells: [ DataCell(Text('Charlie')), DataCell(Text('22')), DataCell(Text('Male')), ]), ], ) ``` 以上就是Flutter中DataTable的使用方法和示例。希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

c#上位机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值