admin 管理员组

文章数量: 1086019


2024年3月7日发(作者:约瑟夫问题解法)

Dev控件研究(一) gridcontrol简单使用

最近,工作安排,要我研究dev控件。。。项目没开始,被要求搞研究。。。界面

dev的控件表现效果及实用功能都是蛮方便和强大的。gridcontrol中有5种view 型式,普通的是gridview,然后分别为cardview、BandedView、Advanced BandedView、LayoutView;共5种。gridview跟WinForm自带的差不多,有一些高级特性,比如说可以把某一列拿出来分组啊,之类的。我这几天主要研究了这三个:LayoutView、BandedView、AdvancedBandedView。

LayoutView实现的视觉效果可以说很。。。炫~(我们做应用行业软件的。。项目组长却要求这么炫的效果。。。我觉得他是想不开。。。)

仔细看了dev的demo源代码,实际上这里只需要在gridcontrol 中 的designer中 的view组中把OptionView下的viewmode 设置成“Carousel”就达到这种“旋转木马”式的gridcontrol view 特效了。。。

关键部分还是细节,ngle 这个属性决定“旋转木马”的pitch angle 螺距角; 螺旋角; 螺旋升角; 俯仰角; 倾角; 节锥半角

【主科技词汇】 。。。

Roll Angle 属性决定着 倾侧角度~~其它的属性都好说。

然后就是columns的设置问题了,设置column的长高啊什么的,现在还没完全弄明白~~。。。有时候设置了,coumn没变。。。反正要想真正达到图片中的那种效果,得很细心的搞一下才行。

将其设置为图片类型的时候,是比较痛苦的事情。我开始以为在给gridcontrol的datatable里面设置一列为路径 string 就够了~结果试了半天(没办法,源码里面调用的是xml文件!~~图片是Int64类型的,刚开始没仔细看。。),在csdn搜到了。。。

//显示数据

private void showData(List list)

{

DataTable dt = new DataTable("OneEmployee");

("Caption", e(""));

("Department", e(""));

("PhotoName", e("[]"));

for (int i = 0; i < ; i++)

{

DataRow dr = ();

dr["Caption"] = list[i].Name;

dr["Department"] = list[i].Department;

string imagePath = @"D:C#photos" + list[i].PhotoPath;

dr["PhotoName"] = getImageByte(imagePath);

(dr);

}

urce = dt;

}

//返回图片的字节流byte[]

private byte[] getImageByte(string imagePath)

{

FileStream files = new FileStream(imagePath, );

byte[] imgByte = new byte [ ];

(imgByte, 0, );

();

return imgByte;

}

来自CSDN博客,转载请标明出处:/alen0707/archive/2009/05/20/

必须转换成2进制数组,属性为pictureedit的column才能认~~~,then,基本上完成。。。LayoutView~

.net - 第三方控件Devexpress - GRIDCONTROL 和 GRIDVIEW 的简单使用(C/S)

Tag:

.Net

C_

第三方控件

Devexpress

GridView

GRIDCONTROL 和 GRIDVIEW 的简单使用

【添加、删除、保存、撤销、修改(是在gridView上面直接修改)】

【添加、修改、删除】只是对gridView所绑定的数据源进行的操作的,需要通过【修改】来提交到数据库

【撤销】是撤销对数据源的修改,保存后无法撤销

gridControl:ntrol.

相当于一个dateGrid的控制器,它包括多种显示样式:GridView,CardView,LayoutView 等等.

gridView:ew.

是一个常用的表格形式,下面以gridView为例.

labelControl1:ontrol.

标签,类似于普通的Label

SysUserMgt:是一个对象管理接口,省略.

SysUserMgtImpl:是对管理接口的实现(增、删、改、差),省略.

SysUser:实体类,省略.

SysUserMgtImpl --> Select(); 查询所有用户,返回 DataSet 集合

SysUserMgtImpl --> Insert(SysUser sysUser); 接受一个新用户,添加

SysUserMgtImpl --> Update(SysUser sysUser); 接受一个新用户,修改

SysUserMgtImpl --> Delete(int sysUserId); 接受用户的ID,删除用户

===================加载数据================================

SysUserMgt sysUserMgt = new SysUserMgtImpl();

_dsUser = ();

// 绑定数据源

urce = _[0">;

===================设置gridView的样式======================

// 设置奇数行颜色 // 默认也是白色 可以省略

lor = ;

// 使能 // 和和上面绑定 同时使用有效

AppearanceOddRow = true;

// 设置偶数行颜色

lor = moke;

// 使能

AppearanceEvenRow = true;

// ID 只读 s[0">.ReadOnly = true; 无效

s[0">.ly = true;

// 可以用下面的方式替换

//toryItemTextEdit userId = new toryItemTextEdit();

//ly = true;

//s[0">.ColumnEdit = userId;

// 将第三列设置成密码框,让其看不见,但是可以修改

toryItemTextEdit loginPass = new toryItemTextEdit();

// 密码的显示样式可以替换,只能是 char 型

rdChar = '*';

s[2">.ColumnEdit = loginPass;

// 将站点字段替换成一个下拉式的只读(默认)表格,comboBox无效

toryItemGridLookUpEdit station = new toryItemGridLookUpEdit();

StationMgt stationMgt = new StationMgtImpl();

DataSet dsStation = IdAndName();

urce = [0">;

// 当什么都没选的时候显示的文本

xt = "请选择站点";

// 显示的字段名 //如果是En文,区分大小写。如:NAME or name

yMember = "站点名称";

// 给view 的值 -- 字段名 // 区分大小写

ember = "站点编号";

s[8">.ColumnEdit = station;

===================添加记录================================

Row();

===================删除记录================================

SelectedRows();

===================保存修改================================

(); // 见“焦点设置”

if (_[0">.GetChanges()==null)

{

("没有修改");

return;

}

SysUserMgt sysUserMgt = new SysUserMgtImpl();

// 遍历所有修改过的行

foreach (DataRow row in _[0">.GetChanges().Rows)

{

/*

========DataRowState 成员名称 说明 ========

Added 该行已添加到 DataRowCollection 中,AcceptChanges 尚未调用。

Deleted 该行已通过 DataRow 的 Delete 方法被删除。

Detached 该行已被创建,但不属于任何 DataRowCollection。DataRow 在以下情况下立即处于此状态:创建之后添加到集合中之前;或从集合中移除之后。

Modified 该行已被修改,AcceptChanges 尚未调用。

Unchanged 该行自上次调用 AcceptChanges 以来尚未更改。

* */

// 如果是删除,则通过ID删除

if (te == d)

{

int userId = (row[0, al">.ToString());

(ng());

(userId);

}

// 如果是添加,则创建无ID对象保存——“添加”

else if (te == )

{

SysUser user = new SysUser();

_id = row[1">.ToString();

_pass = row[2">.ToString();

= row[3">.ToString();

= row[4">.ToString();

= row[5">.ToString();

s = row[6">.ToString();

= row[7">.ToString();

nId = (row[8">.ToString());

(user);

}

// 如果是修改,则创建有ID对象保存——“修改”

else if (te == ed)

{

SysUser user = new SysUser();

rId = (row[0">.ToString());

_id = row[1">.ToString();

_pass = row[2">.ToString();

= row[3">.ToString();

= row[4">.ToString();

= row[5">.ToString();

s = row[6">.ToString();

= row[7">.ToString();

nId = (row[8">.ToString());

(user);

}

}

_Changes(); // 改变ds,必须放到修改之后

(); // 见“焦点设置”

("保存成功!");

===================撤销修改================================

// 保存后无法撤销

(); // 见“焦点设置”

if (_[0">.GetChanges() == null)

{

("没有可撤销的项!");

}

else

{

_Changes();// 还原改变(回滚)

}

(); // 见“焦点设置”

===================焦点设置================================

如果添加、删除、保存、撤销等触发的控件能够能到焦点,如:按钮,那么,就可以将设置焦点的这两句话去掉。

由于我们用的是快捷菜单,它是无法获得焦点的,所以才会有这两句话:

();

();

作用:触发_[0"> 的 Change 事件(失去焦点才能触发)

解释:

labelControl1:

是一个无内容的空标签,让它得到焦点,那么 gridView 就会失去焦点,才会触发 _[0"> 的 Change 事件

当然,也可以用其他可以得到焦点的空间代替,但是这个空间必须是可见的


本文标签: 设置 焦点 修改 保存 显示