小白操作C# DataTable

By hi_aardio at 2022-04-12 • 0人收藏 • 245人看过

小白操作,在下文的基础上,添加了自己的一些理解

调用c#自带控件DataGridView和DataTable显示数据

图来一个

image.png

码来一发

import win.ui;
/*DSG{{*/
var winform = win.form(text="嵌入 .Net 控件";right=759;bottom=675)
winform.add(
button={cls="button";text="删除所有行";left=38;top=500;right=149;bottom=533;z=3};
button2={cls="button";text="删除所有行2";left=38;top=545;right=149;bottom=578;z=4};
button3={cls="button";text="删除某一行";left=38;top=589;right=149;bottom=622;z=6};
button4={cls="button";text="添加指定列";left=169;top=498;right=280;bottom=531;z=5};
button5={cls="button";text="删除多行";left=40;top=630;right=151;bottom=663;z=7};
button6={cls="button";text="操作某一行";left=171;top=548;right=282;bottom=581;z=9};
button7={cls="button";text="排序";left=321;top=503;right=432;bottom=536;z=8};
custom={cls="custom";left=25;top=19;right=736;bottom=290;db=1;dl=1;dr=1;dt=1;z=1};
edit={cls="edit";left=26;top=330;right=737;bottom=448;autohscroll=false;db=1;dl=1;dr=1;edge=1;multiline=1;vscroll=1;z=2}
)
/*}}*/

import console;
console.open();
import System.Windows.Forms;
var Forms = System.Windows.Forms;
var dataGridView = Forms.CreateEmbed("DataGridView", winform.custom);
dataGridView.ColumnHeadersHeightSizeMode = 2; //避免在高分屏下错乱 

import System.Type;
import System.Data;

var dataTable = System.Data.DataTable("DT");
dataTable.Columns.Add("name"); //添加列 
dataTable.Columns.Add("count", System.Type.GetType("System.Double")); //添加指定数据类型的列

//添加数据
var row = dataTable.NewRow();
row.ItemArray = {
    "Name1", 123
};
dataTable.Rows.Add(row);
//添加数据
var row = dataTable.NewRow();
row.ItemArray = {
    "Name2", 456
};
dataTable.Rows.Add(row);

var row = dataTable.NewRow();
row.ItemArray = {
    "Name3", 789
};
dataTable.Rows.Add(row);

var row = dataTable.NewRow();
row.ItemArray = {
    "Name4", 1024
};
dataTable.Rows.Add(row);

//使用index赋值
var row = dataTable.NewRow();
row[1] = "我是index";
row[2] = 999;
dataTable.Rows.Add(row);

//使用列名赋值
var row = dataTable.NewRow();
row.Item["name"] = "我的列名";
row.Item["count"] = 888;
dataTable.Rows.Add(row);

winform.button.oncommand = function(id, event) {
    //删除所有行,保留列名
    dataTable.Rows.Clear();
}

winform.button2.oncommand = function(id, event) {
    //删除所有行
    dataTable.Columns.Clear();
}

winform.button4.oncommand = function(id, event) {
    //向指定位置添加列
    dataTable.Columns.Add("序号").SetOrdinal(0);

}

winform.button3.oncommand = function(id, event) {

    console.log("删除前行数", dataTable.Rows.Count)
    //使用DataTable.Rows.RemoveAt(index)方法
    dataTable.Rows.RemoveAt(0);
    console.log("删除后行数", dataTable.Rows.Count)
}

winform.button5.oncommand = function(id, event) {

    for (i = dataTable.Rows.Count - 1; 0; - 1) {
        dataTable.Rows.RemoveAt(i);

    }

}

winform.button6.oncommand = function(id, event) {
    var row = dataTable.Rows[1]
    row.Item["name"] = "我改了name";
    row.Item["count"] = 0000;
    var row2 = dataTable.Rows[2]
    row2[1] = "我改了name+";
    row2[2] = 00000;
}

winform.button7.oncommand = function(id, event) {
    //无法排序,不清楚原因
    dataTable.DefaultView.Sort = "name DESC, count ASC";

}

//显示数据

var dataView = System.Data.DataView(dataTable);
dataGridView.DataSource = dataView;
dataGridView.EditMode = 2;

//添加事件(event)
dataTable.ColumnChanged = function(sender, eventArgs) {
    var columnName = eventArgs.Column.ColumnName;
    var value = eventArgs.Row.getItem(columnName);
    winform.edit.print("已改变列:", columnName, " 已变更值:", value);
}

winform.show();
win.loopMessage();


3 个回复 | 最后更新于 2022-04-12
2022-04-12   #1

我觉得dataview比listview好的一点就是横竖线更加清晰颜色深,(●—●)

2022-04-12   #2

请教这个dataview展示的数据是每次执行后都需要去刷新一次,还是有其它办法?

2022-04-12   #3

回复#2 @hi_aardio :

我是当listview用的,应该提供数据后刷新,反正我用的方式和listview一样。 如果大量数据可以用事件negin end一次刷新。

登录后方可回帖

登 录
信息栏
公告:
私人站, 专注分享, 可在分享中适当提问, 但谢绝纯提问, 否则不再提醒一律删帖, 谢谢合作!



本站域名:HtmLayout.Cn
aardio可以快速开发上位机,本站主要记录了学习过程中遇到的问题和解决办法及aardio代码分享

这里主要专注于aardio学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.

Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
本 站 主 站:Stm32cube中文网
Sciter中文在线文档Sciter在线学习文档
空间赞助:才仁机械
Loading...