(1)Dev控件GridControl 的使用
1、确认当前正在编辑的单元格的输入
this.gridview1.CloseEditor();
2、保存当前行的值到数据源
this.gridview1.UpdateCurrentRow();
3、通过数据适配器把修改更新到数据库
sqlDataAdapter1.Update(myDataSet, "MyTable")
//此时直接通过DataAdapter执行Update就可以
按照1,2,3的步骤执行;也可以通过1,2步骤然后通过Sql实现
(2)DataGrid的初始化
gridView1.OptionsView.EnableAppearanceEvenRow = true;
gridView1.OptionsView.EnableAppearanceOddRow = true;
gridView1.OptionsView.ShowFilterPanel = false;
gridView1.OptionsView.ShowGroupPanel = false;
gridView1.OptionsView.ShowGroupPanel=false;
gridView1.OptionsSelection.EnableAppearanceFocusedCell = false;
gridView1.OptionsBehavior.Editable = false;
gridView1.OptionsCustomization.AllowColumnMoving = false;
gridView1.OptionsCustomization.AllowColumnResizing = false;
gridView1.OptionsCustomization.AllowGroup = false;
gridView1.OptionsCustomization.AllowFilter = false;
gridView1.OptionsCustomization.AllowSort = true;
(3)获取选中的行 和选中行的字段的内容
int[] a = this.gridView1.GetSelectedRows(); //传递实体类过去 获取选中的行
LAA.AssetGuid = this.gridView1.GetRowCellValue(a[0], "AssetGuid").ToString();//获取选中行的内容



(4)以前在windows 自带的控件里面Button控件的相互调用是
button1_Click(null,EventArgs.Empty);
Dev控件下面是
simpleButton1_Click(new object(),new EventArgs());
(5)在XtraGrid中如何验证单元格的值
我们在XtraGrid直接输入数据的情况下,如何验证每一个单元格输入的值是否正确呢?
有两种方法来实现基于单元格的验证:
1、使用RepositoryItem.Validating事件
事件的"sender" 必须转换为BaseEdit类型,使用EditValue来获取当前输入的值并进行校验,如果校验不通过,把e.Cancel设置True。这种方法一般用来对内置控件的单元格进行数据验证
2、使用 GridView.ValidatingEditor 事件
事件的"sender"必须转换为GridView类型,当前列可以从GridView.FocusedColumn属性获得,值可以从e.Value获取,如果校验不通过,需要把e.Valid设置为False.。
这种方法一般用于对整个Grid内的文本框进行数据验证
在设置完事件之后需要写一个GridView.InvalidValueException 的事件委托:
例如:

private void gridView1_InvalidValueException(object sender, DevExpress.XtraGrid.Views.Base.InvalidValueExceptionEventArgs e)
{
e.ThrowException = false;
e.WindowText = "The new value is invalid. Please correct it or press Esc to abandon your changes.";
e.DisplayError = true;
}

(6)barManager的具体设置
在增加了barManager控件以后,在[Click Here to add MainMenu] [Click Here to Tool Bar]里面选择[Click Here to Tool Bar] 填写需要新增的工具栏按钮。
进入Designer 里面,选择ToolBars ->Custom 1->OptionsBar 里面进行如下设置:
AllowQuickCustomization=false
DrawDragBorder=false
RotateWhenVertical=false
UseWholeRow=True
以上4项进行初始化设置
(7) 在DataGrid 里面增加状态栏
首先在BarManager里面增加StaticText 把新增的barStaticItem 的AutoSize 设置为Spring
然后,编写以下代码:
private void StateCote()

{
if (gridView1.RowCount!=0)

{
int a=this.gridView1.RowCount;
barStaticItem1.Caption="当前共有记录:"+a.ToString();
int[] b=this.gridView1.GetSelectedRows();
b[0]+=1;
barStaticItem2.Caption="当前选中:"+b[0].ToString();
}
else

{
barStaticItem1.Caption="当前共有记录:";
barStaticItem2.Caption="当前选中:";
}
}

private void gridControl1_Click(object sender, System.EventArgs e)

{
StateCote();
}

private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)

{
StateCote();
}
(8) DateTable 填充DataGrid
这里需要引用:
using DevExpress.Utils;

/**//// <summary>
/// 根据DataTable 填充DataGrid
/// </summary>
/// <param name="dt"></param>
private void DisposeDataGrid(DataTable dt)

{
//标题居中
gridView1.Appearance.HeaderPanel.TextOptions.HAlignment =HorzAlignment.Center;
this.gridControl1.DataSource = dt;
gridView1.Columns[0].Visible = false;//异常日志GUID
gridView1.Columns[1].Visible = false;//通行编号
gridView1.Columns[2].Visible = false;//通道编号
gridView1.Columns[3].Caption = "通道名称";
gridView1.Columns[3].Width = 100;

gridView1.Columns[4].Caption = "卡号";
gridView1.Columns[4].Width = 100;

gridView1.Columns[5].Caption = "持卡人姓名";
gridView1.Columns[5].Width = 60;


gridView1.Columns[6].Caption = "主卡卡号";
gridView1.Columns[6].Width = 100;
gridView1.Columns[7].Caption = "主卡持卡人";
gridView1.Columns[7].Width = 60;
gridView1.Columns[8].Caption = "通行时间";
gridView1.Columns[8].Width = 100;


gridView1.Columns[9].Caption = "车牌号码";
gridView1.Columns[9].Width = 60;
gridView1.Columns[10].Visible = false;//图象GUID


gridView1.Columns[11].Caption = "异常描述";
gridView1.Columns[11].Width = 100;

gridView1.Columns[12].Caption = "处理结果";
gridView1.Columns[12].Width = 100;

gridView1.Columns[13].Visible = false;//ImageID


//可以排序
gridView1.OptionsCustomization.AllowSort=true;
}

其中有一列显示时间类型

gridView1.Columns[3].Caption = "操作时间";
gridView1.Columns[3].Width = 200;
gridView1.Columns[3].UnboundType = DevExpress.Data.UnboundColumnType.DateTime;
gridView1.Columns[3].DisplayFormat.FormatString = "F";
gridView1.Columns[3].DisplayFormat.FormatType = FormatType.DateTime;
(9) 双击DataGrid弹出详细信息
private void gridControl1_DoubleClick(object sender, System.EventArgs e)

{
//双击弹出异常日志描述
if (this.gridView1.RowCount > 0)

{
int[] a=this.gridView1.GetSelectedRows();
string str_GUID=this.gridView1.GetRowCellValue(a[0],"Ex_No").ToString();//获得异常编号
MessageBox.Show(str_GUID);
frmExceptionLogDesc dlg=new frmExceptionLogDesc();
dlg.Text = "异常日志查看";
dlg.ShowDialog();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)