C#、devExpress 的 给bandedGrid加菜单功能 :复制、粘贴的例子(转)
C#、devExpress 的 给bandedGrid加菜单功能 :复制、粘贴的例子
CopyFromGrid
PasteToGrid
PasteNewRowsToGrid
private void mnuPaste_Click(object sender, EventArgs e)
{
this.Cursor = Cursors.WaitCursor;
//if(bandedGridView1.GetSelectedRows)
int[] iSelRowIndexs=bandedGridView1.GetSelectedRows();
if(iSelRowIndexs==null || iSelRowIndexs.Length==0)
{
Common.DisplayMsg(this.Text,"先请选择需要范围");
}else
{
string sFieldName = bandedGridView1.FocusedColumn.FieldName;
if(sFieldName !=null)
{
if (sFieldName == "Discount" || sFieldName == "ProjectRating")
PasteToGrid(bandedGridView1, iSelRowIndexs[0], iSelRowIndexs.Length, sFieldName);
}
}
this.Cursor = Cursors.Default;
} private void CopyFromGrid(DevExpress.XtraGrid.Views.BandedGrid.BandedGridView bandedGrid)
{
int[] iSelRowIndexs = bandedGridView1.GetSelectedRows();
if(iSelRowIndexs ==null || iSelRowIndexs.Length==0)
{
Common.DisplayMsg(this.Text,"请先选择需要复制的内容");
return;
} DevExpress.XtraGrid.Columns.GridColumn[] gcs = null; Clipboard.Clear();
StringBuilder sb = new StringBuilder();
int iRow = 0;
for (int iTemp = 0; iTemp < iSelRowIndexs.Length; iTemp++)
{
iRow = iSelRowIndexs[iTemp];
gcs = bandedGridView1.GetSelectedCells(iRow);
foreach(DevExpress.XtraGrid.Columns.GridColumn gc in gcs)
{
sb.Append(bandedGridView1.GetRowCellValue(iRow, gc)); if (gc != gcs[gcs.Length - 1]) // 加上 tab符,除了最后一列外
sb.Append(Convert.ToChar(Keys.Tab));
} if (iRow != iSelRowIndexs[iSelRowIndexs.Length - 1]) // 加上换行符。除了最后一行外
sb.Append(Convert.ToChar(Keys.Return));
} Clipboard.SetText(sb.ToString());
} // 这里暂时只有 decimal型数据,并且每次粘贴只有一列的
// 要么是折扣列,要么是评估收视率列
private void PasteToGrid(DevExpress.XtraGrid.Views.BandedGrid.BandedGridView bandedGrid,int iStartRowIndex,int iSelRowCount,string sFieldName)
{
string sClipBoard = Clipboard.GetText().TrimEnd('\n').TrimEnd('\r'); // 去掉最后一个\r\n;
string[] aRow = sClipBoard.Split(Convert.ToChar(Keys.Return)); // 取得行
string[] aCell = new string[1]; if (aRow == null || aRow.Length == 0)
{
Common.DisplayMsg(this.Text,"粘贴板没有数据");
return;
} if (iSelRowCount != aRow.Length)
{
Common.DisplayMsg(this.Text, "选择的数据行数与粘贴板的行数不匹配\r\n\r\n选择行数: " + iSelRowCount + "\r\n粘贴板行数: " + aRow.Length);
return;
} decimal dTemp=0.0M;
bool bResult = false;
for (int i = 0; i < aRow.Length; i++)
{
aCell = aRow[i].Split(Convert.ToChar(Keys.Tab));// 取得列
if (!Common.IsNullOrEmptyObject(aCell[0]))
{
bResult = Decimal.TryParse(aCell[0], out dTemp);
if (dTemp < 0) dTemp = 0;
if (sFieldName == "Discount")
{
if (dTemp == 0) dTemp = 100;
if (dTemp > 100) dTemp = 100;
if (dTemp > 0 && dTemp <= 1) dTemp = dTemp * 100;
}
bandedGrid.SetRowCellValue(iStartRowIndex + i, sFieldName, dTemp);
}
else
{
bandedGrid.SetRowCellValue(iStartRowIndex + i, sFieldName, 0);
}
}
} private void PasteNewRowsToGrid(DevExpress.XtraGrid.Views.BandedGrid.BandedGridView bandedGrid, string[] sFieldNames)
{
string sClipBoard = Clipboard.GetText().TrimEnd('\n').TrimEnd('\r'); // 去掉最后一个\r\n;
string[] aRow = sClipBoard.Split(Convert.ToChar(Keys.Return)); // 取得行
string[] aCell = new string[1]; if (aRow == null || aRow.Length == 0)
{
Common.DisplayMsg(this.Text,"粘贴板没有数据");
return;
} if (sFieldNames.Length != aRow[0].Split(Convert.ToChar(Keys.Tab)).Length)
{
Common.DisplayMsg(this.Text, "需要的列数与粘贴板的列数不匹配\r\n\r\n需要的列数: " + sFieldNames.Length + "\r\n粘贴板行数: " + aRow.Length);
return;
} decimal dTemp=0.0M;
int iTemp = 0;
bool bResult = false;
int iRowIndex = 0; int iMaxDaypartID = Common.GetMaxTableID(sqlHelper.ConnStringCPRP, "DaypartID", "Daypart"); for (int i = 0; i < aRow.Length; i++)
{
bandedGridView1.AddNewRow();
bandedGridView1.UpdateCurrentRow();
iRowIndex = bandedGridView1.RowCount - 1; bandedGridView1.SetRowCellValue(iRowIndex, "DaypartID", ++ iMaxDaypartID); if (! arrAddedDaypartID.Contains(iMaxDaypartID))
{
arrAddedDaypartID.Add(iMaxDaypartID);
} aCell = aRow[i].Split(Convert.ToChar(Keys.Tab));// 取得列
for (int j = 0; j < aCell.Length; j++)
{
bResult = int.TryParse(aCell[0], out iTemp);
if (bResult)
{
bandedGridView1.SetRowCellValue(iRowIndex, bandedGridView1.Columns[sFieldNames[j]], iTemp);
}
else
{
bResult = Decimal.TryParse(aCell[0], out dTemp);
if (bResult)
{
bandedGridView1.SetRowCellValue(iRowIndex, bandedGridView1.Columns[sFieldNames[j]], dTemp);
}
else
{
bandedGridView1.SetRowCellValue(iRowIndex, bandedGridView1.Columns[sFieldNames[j]], aCell[j].Trim('\n'));
}
}
}
}
} //
private void mnuPaste2_Click(object sender, EventArgs e)
{
this.Cursor = Cursors.WaitCursor; string[] sFieldNames = new string[] { "MediaName","StartTime","EndTime","Dayofweek","ProgramName","Position","Cost1","Cost2","Cost3" };
PasteNewRowsToGrid(bandedGridView1,sFieldNames); this.Cursor = Cursors.Default;
}
C#、devExpress 的 给bandedGrid加菜单功能 :复制、粘贴的例子(转)的更多相关文章
- DevExpress.XtraGrid.Views.BandedGrid.BandedGridView
使用的是DevExpress.XtraGrid.Views.BandedGrid.BandedGridView 类 没有在工具箱里找到对应控件 ,绕了一下,先创建一个gridcontrol ,然后gr ...
- Android中的复制粘贴
Android中的复制粘贴 The Clipboard Framework 当使用clipboard framework时,把数据放在一个剪切对象(clip object)里,然后这个对象会放在系统的 ...
- 远程桌面时plsql的复制粘贴功能失效
解决办法:重新启动远程桌面上的rdpclip进程就可以复制粘贴了,但是每次重开远程桌面都会出现同样的问题.可以rdpclip这个设置成开机启动.
- 不注册COM在Richedit中使OLE支持复制粘贴
正常情况下在Richedit中使用OLE,如果需要OLE支持复制粘贴,那么这个OLE对象必须是已经注册的COM对象. 注册COM很简单,关键问题在于注册时需要管理员权限,这样一来,如果希望APP做成绿 ...
- ios textfield / textview长按复制粘贴中文显示
当我们在写应用时要复制粘贴文本框内容时,默认显示的文字为英文字体,可按如下步骤设置,显示中文:
- 复制粘贴出来的悲剧----spring实现文件下载和HttpStatus.CREATED
今天真是被自己的懒惰和复制粘贴给坑惨了... 网上有这么一个spring下载文件的最佳实践: @RequestMapping("download") public Response ...
- ZeroClipboard跨浏览器复制粘贴
<!DOCTYPE html> <html> <head> <title>ZeroClipboard跨浏览器复制粘贴</title> < ...
- shutil复制粘贴和压缩
shutil复制粘贴和压缩 shutil 高级的文件.文件夹.压缩包处理模块 @1).将文件内容拷贝到另一个文件中 import shutil shutil.copyfileobj(open(&quo ...
- ubuntu快捷复制粘贴
今天使用putty,纠结复制粘贴的时候,才发现 原来只要选中文本后,就可以中键粘贴 整个桌面环境可用,新技能啊以前居然不知道
随机推荐
- 本次安装Lion记录
黑苹果驱动之家 http://it360.org.cn/ Mac安装在Macintosh上是没什么好讲的,也没什么难度,原生的东西.但每次Mac安装在PC上总能折腾一番,驱动.五国.各种报错..今天记 ...
- lua工具库penlight--02表和数组
类Python的List lua的优美之处在于把数组和关联数组都用table实现了(Python中叫list和dict,C++中叫vector和map). 一般我们把数字索引的table叫做list. ...
- ADO.NET数据库应用开发_ExtendedProperties属性
7.5.5 ExtendedProperties属性 ExtendedProperties属性用来获取存储自定义属性的集合.可以在该属性中增加附加的存储信息.它的扩展属性必须是字符串类型.当以XML的 ...
- [fork]Linux中的fork函数详解
---------------------------------------------------------------------------------------------------- ...
- [TI-Sitara]启动流程
前段时间在准备AM437x启动相关的一些事情,对MLO.SPL等事情也是有些糊涂,于是分享下面这篇文章 转自:http://blog.csdn.net/psvoldemort/article/deta ...
- Spider Studio 新版本 (码年吉祥版) - 浏览器视图 / 脚本库上线!
各位哥哥姐姐弟弟妹妹小伙伴们春节好! 2014年对于我们程序员很重要, 因为今年是 "码" 年! SS在此重要之年到来之际热力推出两大重要功能恭贺新春: 1. 浏览器视图 以前SS ...
- MySQL5.0、5.1、5.5、5.6功能进化
目前线上使用的版本情况:新上线端口统一使用5.5,不说别的,一个快速恢复重启就值回票价. 但因为历史原因还有大量5.1的版本,甚至,I’am sorry,还有少数5.0的版本. 至于5.0以前的版本, ...
- ftp安装和虚拟用户创建
安装 1.安装 sudo apt-get install vsftpd 2 查看安装结果 安装完毕,检查vsftpd进程是否已启动,可以查看进程或者查看监听端口 ps -eaf|grep vsftpd ...
- git 怎么看某个commit 修改的代码
详细的更改: git show commitid 只列出文件名:git show --pretty="format:" --name-only commitid 转自: http: ...
- 前端gulp自动化构建配置
为了节省http请求次数.节约带宽,加速页面渲染速度,达到更好用户体验的目的.现在普遍的做法是在上线之前做静态资源的打包构建,也就是静态资源的合并压缩: 这里使用的是gulp,当然现在有更强大的模块化 ...