aardio 文档
aardio 范例: 嵌入 .NET 数据表格
//aardio 嵌入 .NET 数据表格
import win.ui;
/*DSG{{*/
var winform = win.form(text="嵌入 .NET 控件";right=759;bottom=510)
winform.add(
button={cls="button";text="读取数据";left=495;top=439;right=739;bottom=504;color=14120960;db=1;dr=1;font=LOGFONT(h=-14);note="获取数据源中的数据";z=3};
custom={cls="custom";left=25;top=25;right=736;bottom=274;db=1;dl=1;dr=1;dt=1;z=1};
edit={cls="edit";left=26;top=290;right=737;bottom=435;autohscroll=false;db=1;dl=1;dr=1;edge=1;multiline=1;vscroll=1;z=2}
)
/*}}*/
import System;
import System.Data;
import System.Windows.Forms;
//.NET 控件必须用 System.Windows.Forms.CreateEmbed 嵌入 aardio 窗口
var dataGridView = System.Windows.Forms.CreateEmbed("DataGridView",winform.custom);
dataGridView.EditMode = 2;
//添加数据列
var dataTable = System.Data.DataTable("DT");
dataTable.Columns.Add("名称");//添加列
dataTable.Columns.Add("计数",System.Double); //添加指定数据类型的列
dataTable.Columns.Add("选择",System.Boolean); //自动显示复选框
//绑定数据源到视图
var dataView = System.Data.DataView(dataTable);
dataGridView.DataSource = dataView;
//替换名字为"名称"的列为下拉框控件(参考 System.Windows.Forms 库源码)
dataGridView.ReplaceNameValueListColumn("名称",120/*宽度*/,
{ "王五","张三","李四"},
{ "WangWu","ZhangSan","LiSi"}
);
//添加测试数据
var row = dataTable.NewRow();
row.ItemArray = {"WangWu",123, true}
dataTable.Rows.Add(row);
/*
可以用 FillFromArray 函数一次性填充数据。
避免密集调用 .NET 参数,减少不必要的跨语言交互成本。FillFromArray 实现请查看 System.Data.DataTable 源码。
*/
dataTable.FillFromArray({
{"ZhangSan",456,false};
{"LiSi",789,true}
})
//添加事件(event)
dataTable.ColumnChanged = function(sender,eventArgs){
var columnName = eventArgs.Column.ColumnName;
var value = eventArgs.Row.getItem(columnName);
winform.edit.print("已改变列:",columnName," 已变更值:",value);
}
//读取数据
winform.button.oncommand = function(id,event){
//一次读取所有数据到 aardio 数组
var data = dataTable.ExtractToArray();
//输出结果
for(i=1;#data;1){
winform.edit.dump( data[i] )
}
//修改数据
data[1][2]= 999;
//替换并更新原来的数据
dataTable.FillFromArray(data,true)
//下面是原始的方法,交互次数多一些
/*
for(i=1;dataTable.Rows.Count;1){
var arr = dataTable.Rows[i].ItemArray;
winform.edit.print( arr[1] ) ;
}
*/
}
winform.show();
win.loopMessage();
Markdown 格式