C#、devExpress 的 给bandedGrid加菜单功能 :复制、粘贴的例子
来源:互联网 发布:知乎账号 已注销 编辑:程序博客网 时间:2024/06/11 16:20
功能函数:
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加菜单功能 :复制、粘贴的例子
- MFC 实现richedit右键菜单的复制粘贴功能
- DevExpress: 给ASPxGridView 加右键菜单 ASPxPopupMenu
- 上下文菜单 + 复制粘贴的问题
- Java右键菜单实现文本组件内容的的复制、粘贴、剪切功能
- 复制粘贴功能失效的解决办法
- swt中提供的复制粘贴功能.
- vim寄存器与复制粘贴的功能
- EditText去掉复制粘贴的功能
- iOS 剪切板 复制粘贴功能的实现。
- 禁止文本框的复制和粘贴功能
- 复制 粘贴 转发功能的实现
- Android屏蔽edittext的复制、粘贴功能
- c#+Winform实现自定义的“复制、粘贴”右键快捷菜单,多个控件共享使用一个右键菜单
- iOS 添加粘贴板的功能(复制功能)
- CRichEditCtrl 好象没有复制、粘贴的功能(Ctrl+C、Ctrl+v都不好用
- js 右键菜单、禁止剪切、复制、粘贴的文本框代码
- 禁止textField和textView的复制粘贴菜单:
- java.lang.Integer.toHexString(b[n] & 0XFF)中0XFF使用
- 【信息采集】IBM AIX系统硬件信息查看命令(shell脚本)
- Activity概述
- 各种关联映射
- python学习2--列表和元组
- C#、devExpress 的 给bandedGrid加菜单功能 :复制、粘贴的例子
- Vb.net声明API
- 【大气红歌】著名民通歌唱家拉齐的音乐之路
- Android 中Monkey的用法
- JSP中include指令和include动作的区别
- C++前向声明注意
- 经历
- 主键约束、唯一性约束、检查约束
- 存储过程中使用事务