SourceGrid之Grid绑定数据
private void BindData()
{
//为绑定的按钮选线增加单击事件
SourceGrid.Cells.Controllers.CustomEvents clickEvent = new SourceGrid.Cells.Controllers.CustomEvents();
clickEvent.Click += new EventHandler(clickEvent_Click);
//清除原有绑定的数据
this.grid1.Columns.Clear();
this.grid1.Rows.Clear();
grid1.BorderStyle = BorderStyle.FixedSingle;
grid1.ColumnsCount = 8;//设置要绑定的列数
//设置列的宽度
grid1.Columns[0].Width = 200;
grid1.Columns[1].Width = 200;
grid1.Columns[2].Width = 105;
grid1.Columns[3].Width = 105;
grid1.Columns[4].Width = 105;
grid1.Columns[5].Width = 105;
grid1.Columns[6].Width = 105;
//设置每次绑定一行数据
grid1.FixedRows = 1;
//开始绑定第一行数据也就是列标题
grid1.Rows.Insert(0);
//为第一行绑定列头
SourceGrid.Cells.ColumnHeader columnHeader;
columnHeader = new SourceGrid.Cells.ColumnHeader("服务名称");
grid1[0, 0] = columnHeader;
columnHeader = new SourceGrid.Cells.ColumnHeader("服务描述");
grid1[0, 1] = columnHeader;
columnHeader = new SourceGrid.Cells.ColumnHeader("日志文件");
grid1[0, 2] = columnHeader;
columnHeader = new SourceGrid.Cells.ColumnHeader("下载日志文件");
grid1[0, 3] = columnHeader;
columnHeader = new SourceGrid.Cells.ColumnHeader("配置文件");
grid1[0, 4] = columnHeader;
columnHeader = new SourceGrid.Cells.ColumnHeader("下载配置文件");
grid1[0, 5] = columnHeader;
columnHeader = new SourceGrid.Cells.ColumnHeader("上传配置文件");
grid1[0, 6] = columnHeader;
for (int i = 0; i < sendList.Count; i++)//SendList用来提供数据,它是一个泛型集合,里面包含多个服务的详细信息
{
grid1.Rows.Insert(i + 1);//为第i+1行增加数据,因为i是从0开始的,如果从i开始绑定数据会覆盖列头
grid1.Rows[i + 1].Height = 30;//设置行的高度
grid1[i + 1, 0] = new SourceGrid.Cells.Cell(sendList[i].ServiceName, typeof(string));
grid1[i + 1, 1] = new SourceGrid.Cells.Cell(sendList[i].ServiceDesc, typeof(string));
//判断是否存在配置文件,如果不存在标记为无,如果存在,可以下载并且可以上传替换该配置文件
if (sendList[i].Config == null)
{
grid1[i + 1, 4] = new SourceGrid.Cells.Cell("无");
grid1[i + 1, 5] = new SourceGrid.Cells.Cell("无");
grid1[i + 1, 6] = new SourceGrid.Cells.Cell("无");
}
else
{
string[] config = sendList[i].Config.Split(new char[] { '|' });//用来获得所有的配置文件
//用来绑定一个ComBox
SourceGrid.Cells.Editors.ComboBox cbEditor = new SourceGrid.Cells.Editors.ComboBox(typeof(string));
cbEditor.StandardValues = config;
cbEditor.EditableMode = SourceGrid.EditableMode.Focus | SourceGrid.EditableMode.SingleClick | SourceGrid.EditableMode.AnyKey;
//将Combox绑定到第5列
grid1[i + 1, 4] = new SourceGrid.Cells.Cell("", cbEditor);
grid1[i + 1, 4].View = SourceGrid.Cells.Views.ComboBox.Default;
//第6列绑定一个Button,用来点击下载配置文件
grid1[i + 1, 5] = new SourceGrid.Cells.Button("下载配置文件");
grid1[i + 1, 5].AddController(clickEvent);//为Button绑定单击事件
grid1[i + 1, 6] = new SourceGrid.Cells.Button("上传配置文件");
grid1[i + 1, 6].AddController(clickEvent);
}
//判断是否存在日志文件,如果不存在标记为无,如果存在,标记为下载按钮
if (sendList[i].Log == null)
{
grid1[i + 1, 2] = new SourceGrid.Cells.Cell("无");
grid1[i + 1, 3] = new SourceGrid.Cells.Cell("无");
}
else
{
string[] log = sendList[i].Log.Split(new char[] { '|' });
SourceGrid.Cells.Editors.ComboBox cbEditor = new SourceGrid.Cells.Editors.ComboBox(typeof(string));
cbEditor.StandardValues = log;
cbEditor.EditableMode = SourceGrid.EditableMode.Focus | SourceGrid.EditableMode.SingleClick | SourceGrid.EditableMode.AnyKey;
grid1[i + 1, 2] = new SourceGrid.Cells.Cell("", cbEditor);
grid1[i + 1, 2].View = SourceGrid.Cells.Views.ComboBox.Default;
grid1[i + 1, 3] = new SourceGrid.Cells.Button("下载日志文件");
grid1[i + 1, 3].AddController(clickEvent);
}
}
}
//用来注册具体的单击事件,可以忽略不看
private void clickEvent_Click(object sender, EventArgs e)
{
SourceGrid.CellContext context = (SourceGrid.CellContext)sender;
//得到当前点击的行的服务的名称
string str = grid1[context.Position.Row, 0].ToString();
byte[] buffer;
//如果点击的是日志文件列的按钮,则向服务端发送消息提示
if (context.Position.Column == 3)
{
//判断是否选中了日志文件
string file = grid1[context.Position.Row, 2].ToString();
if (file == "")
{
MessageBox.Show("请选择要下载的日志文件");
return;
}
//当客户端向服务端发送0时,代表的时要下载日志文件
string s = "0";
s += str + "|" + file;
buffer = System.Text.Encoding.UTF8.GetBytes(s);
try
{
socket.Send(buffer);
}
catch
{ }
}
//如果点击的是配置文件列的按钮,则向服务端发送消息提示
if (context.Position.Column == 5)
{
//判断是否选中了配置文件
string file = grid1[context.Position.Row, 4].ToString();
if (file == "")
{
MessageBox.Show("请选择要下载的配置文件");
return;
}
//当客户端向服务端发送1时,代表的时要下载日志文件
string s = "1";
s += str + "|" + file;
buffer = System.Text.Encoding.UTF8.GetBytes(s);
try
{
socket.Send(buffer);
}
catch
{
}
}
//如果点击的是上传配置文件列的按钮,则向服务器发送一个配置文件替换掉原有的配置文件
if (context.Position.Column == 6)
{
//先检查是否选中要修改的配置文件
string file = grid1[context.Position.Row, 4].ToString();
if (file == "")
{
MessageBox.Show("请选择要替换的配置文件");
return;
}
try
{
//用来打开要上传的配置文件
OpenFileDialog ofd = new OpenFileDialog();
ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
ofd.Title = "要上传的配置文件";
ofd.Filter = "配置文件|*.xml|配置文件|*.txt|所有文件|*.*";
ofd.ShowDialog(this);
//获得选中文件的路径
string path = ofd.FileName;
//向服务器发送文件,向要发送的配置文件的开头添加2和服务名称的字节数组,方便服务器用来标识
using (FileStream fsRead = new FileStream(path, FileMode.Open, FileAccess.Read))
{
byte[] buffer2 = new byte[fsRead.Length];
//实际读取到的字节数
int r = fsRead.Read(buffer2, 0, buffer2.Length);
string s = "2";
s = s + str + "|" + file + "|";
//声明一个字节集合,用来连接标识和文件
List<byte> list = new List<byte>();
buffer = System.Text.Encoding.UTF8.GetBytes(s);
list.AddRange(buffer);
list.AddRange(buffer2);
//将组合好的字节集合转换为字节数组
byte[] newByte = list.ToArray();
socket.Send(newByte);
fsRead.Close();
}
MessageBox.Show("上传成功");
}
catch
{
}
}
}
SourceGrid之Grid绑定数据的更多相关文章
- miniUI Grid添加汇总行,Grid绑定数据,IDEA免编译设置
坑1: 2017-6-5周二,上午解决了昨天摸索一下午的问题,使用miniui显示汇总行数据,要点有这么几个 在创建Grid div的时候一定要加上以下两个属性: //显示汇总行开关 showSumm ...
- extjs__(grid Panel绑定数据)
1.修改面板名称 双击My Panel 就可以进行修改 2拖入一个grid panel绑定数据 3.创建一个model 只是为了创建一个模型 相当于java中的模型层 只是数据的一个标准 4 ...
- ASPxGridView中如何对主从表绑定数据
注:在从表的aspxgridview中的(OnDataBinding()事件中绑定数据)-----代码如下 //绑定属性值表protected void grid2_sonTable_DataBind ...
- WPF中利用控件的DataContext属性为多个TextBox绑定数据
工作上需要从给定的接口获取数据,然后显示在界面的编辑框中,以往肯定会一个一个的去赋值,但这样太麻烦而且效率很低,不利于维护,于是想到了数据绑定这一方法,数据绑定主要利用INotifyPropertyC ...
- 使用 MVVMLight 绑定数据(转)
MVVMLight绑定数据示例 好了,我们在新建了两个项目,分别是“MVVMLight的主程序” 与 “Model层”,运行的效果及解决方案结构如下: 其实很简单,就是绑定了一个数据源而已,编写的代 ...
- 使用 MVVMLight 绑定数据
如果你还不知道如何在VS中加入MVVMLight的引用,那么建议你先翻阅这篇文章:在VS中安装/使用 MVVMLight 这篇文章主要是介绍如何使用MVVMLight来绑定数据到界面中(View),以 ...
- WPF (DataGridRowHeaderStyle)实现自义定行样式 并绑定数据
原文:WPF (DataGridRowHeaderStyle)实现自义定行样式 并绑定数据 功能阐述 就上面那图片 刚开始 考虑使用 RowHeaderTemplate 来实现 发现总绑定不上数据 ...
- WPF DataGrid 绑定数据及时更新的处理
原文:WPF DataGrid 绑定数据及时更新的处理 默认情况下datagrid 绑定数据源后,在界面编辑某一列后,数据不会及时更新到内存对象中.如在同一行上有一个命令对来获取 当前选中行(内存对象 ...
- WPF (DataGridColumnHeader)实现自义定列头样式 并绑定数据
原文:WPF (DataGridColumnHeader)实现自义定列头样式 并绑定数据 实现功能是这样的 自定义列头 样式 样式里的 数据来源于后台绑定 这篇就说头样式 和头样式数据绑定 思路 1) ...
随机推荐
- java-swingButton
package com.http; import java.awt.*; import java.awt.event.*; import javax.swing.*; import com.http. ...
- AutoIt:AutoIt比我想象的更加强大
前段时间,我一直认为,通过AutoIt进行自动化操作,也只有几个方法可以用,它们只是controlClick, controlsend等如下图: 我一直认为,AutoIt的所有的GUI 方法,都是用来 ...
- c++之cin/cin.get/cin.getline()详解
C++输入过程中,是把输入加载到缓冲区中,然后对缓冲区中的字符进行读取.cin,cin,get(),cin.getline()三个函数虽然都能进行数据读取,但是它们对缓冲区内数据的处理方法是不同的(如 ...
- HDU2159(完全背包)
FATE Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description ...
- 【HDU5512】 2015沈阳赛区D题 规律题(GCD)
第一篇博客,就从一个比较简单的题目入手吧! 题目: [HDU5512] 题意: 有n个塔,编号为1~n, 编号为a,b的塔已经维修好,此外其他的塔都需要维修.塔的维修是有顺序的,每次只能维修编号为k ...
- 注册页面Page的内置属性以及函数 路由 模块化
Page.prototype.route route字段可以获取到当前页面的路径 Page.prototype.setData() setData函数用于将数据从逻辑层发送到视图层,同时改变对应的t ...
- bzoj1941
KD-tree **了这道题 这个估价函数好鬼畜,把min打成max... 关于min的估价函数非常鬼畜,具体我也不知道为什么. #include<bits/stdc++.h> using ...
- [转]git merge 跟 git merge -no-ff
根据这张图片可以看出 git merge –no-ff 可以保存你之前的分支历史.能够更好的查看 merge历史,以及branch 状态. git merge 则不会显示 feature,只保留单条分 ...
- 别用visual editor了,用WindowBuilder
以前利用 Eclipse Visual Editor 项目构建 GUI,现在用WindowBuilder吧. 官网说: The Visual Editor project has been archi ...
- Maven虐我千百遍,我待Maven如初恋
前言 在如今的互联网项目开发当中,特别是Java领域,可以说Maven随处可见.Maven的仓库管理.依赖管理.继承和聚合等特性为项目的构建提供了一整套完善的解决方案,可以说如果你搞不懂Maven,那 ...