您现在的位置是:网站首页> 编程资料编程资料
.Net使用XtraGrid控件绑定数据_基础应用_
2023-05-24
338人已围观
简介 .Net使用XtraGrid控件绑定数据_基础应用_
设计数据源并绑定字段:
数据源可以是实现下列接口之一的任何类型:
- IList 接口,包括一维数组。List
等! - IListSource 接口,例如,DataTable 和 DataSet 类。
- IBindingList 接口,例如,BindingList 类。
- IBindingListView 接口,例如,BindingSource 类。
修改也是同步的
DataTable dataTable = new DataTable(); dataTable.Columns.Add("Name", System.Type.GetType("System.String")); dataTable.Columns.Add("Sex", System.Type.GetType("System.String")); dataTable.Columns.Add("Age", System.Type.GetType("System.String")); DataRow row = dt.NewRow(); ; row["Name"] = "mathilda"; row["Sex"] = "loli"; row["Age"] = "12"; dataTable.Rows.Add(row); // 绑定字段 gridView1.Columns[1].FieldName = "Sex"; gridView1.Columns[2].FieldName = "Age"; gridView1.Columns[0].FieldName = "Name"; gridControl1.DataSource = dataTable;根据数据源自动产生列
gridView2.PopulateColumns();
表格数据与数据源的数据同步
XtraGrid与Windows自带的DataGridView在数据源方面不同的是,对grid里的数据进行任何改动(增、删、改)之后,原本的数据源也相应的改动。通过下面例子可以得出此结论,在窗体添加删,改两个按钮并绑定下面相应的事件。
////// 更改 /// /// /// private void btEdit_Click(object sender, EventArgs e) { Person p = (Person)gridView1.GetRow(gridView1.FocusedRowHandle); } ////// 删除 /// /// /// private void btDelete_Click(object sender, EventArgs e) { if (gridView1.SelectedRowsCount != 0) gridView1.DeleteSelectedRows(); MessageBox.Show(people.Count.ToString()); }
只要对grid的数据经过改动之后,单击相应的按钮就可以查看数据源的信息。
新增一条记录,添加行
(1)、gridView.AddNewRow()、gridView.UpdateCurrentRow()
数据源DataSource如果是DataTable可以用AddNewRow方法,然后UpdateCurrentRow。
但是如果DataSource的来源是List
然后使用gridView.UpdateCurrentRow()将更改同步到数据源DataTable或BindingList中。
(2)、实现 gridView_InitNewRow 事件
删除选中行
删除选中行, 可通过DeleteSelectedRows()方法,
然后使用gridView.UpdateCurrentRow()将更改同步到数据源DataTable或BindingList中。
具体示例代码如下:
if (gridView1.SelectedRowsCount > 0) { gridView1.DeleteSelectedRows(); gridView.UpdateCurrentRow() }获取选定行,指定列单元格的内容
gridView1.GetRowCellValue(pRows[0], ColumName).ToString ();
选择某行后获取当前表格数据:
this.textBox1.Text = gridView2.GetDataRow(e.RowHandle)["列名"].ToString();
Get/Set 单元格的值
通过调用GetRowCellValue获取单元格的值。
public override object GetRowCellValue(int rowHandle, GridColumn column);
rowHandle是行的索引,column列的对象。
通过调用SetRowCellValue设置单元格的值
public void SetRowCellValue(int rowHandle, GridColumn column, object _value);
rowHandle是行的索引,column列的对象。_value是单元格新的值。
以peopleList为例
int englishS=Convert.ToDouble(0,gridView1.Columns["English"])+60; SetRowCellValue(0,gridView1.Columns["English"],englishS);
在XtraGrid有另一种方式,就是直接设置数据源的值。对于上面这个例子,直接找到grid里第一行数据对应的Person对象,设置它的English值。
选中行改变绑定行数据到对应控件中
1、判断是否有Focused行
if (gridView1.IsValidRowHandle(gridView1.FocusedRowHandle))
2、获取Focused行
1、绑定的是数据行:
DataRow Row = gridView1.GetFocusedDataRow();
2、绑定的是实体:
**Entity entity = gridView1.GetFocusedRow() as **Entity;
3、获取Focused行单元格的值
string Code = gridView1.GetFocusedRowCellValue("Code").ToString(); string Code = gridView1.GetRowCellValue(e.FocusedRowHandle, "Code")FocusedRowChanged事件:
if (bandedGridView1.GetFocusedDataRow() == null) return;//判断当前选中行是否为null //返回值 var columnValue= bandedGridView1.GetFocusedRowCellValue("绑定列字段名称").ToString();动态添加列
// 动态添加列 DevExpress.XtraGrid.Columns.GridColumn Col1 = new DevExpress.XtraGrid.Columns.GridColumn(); Col1.FieldName = "Name"; Col1.Caption = "名字"; Col1.Visible = false; Col1.VisibleIndex = gvCountry.Columns.Count; gvCountry.Columns.Add(Col1);
添加非绑定列
下面的例子主要演示如何为gird网格添加一个非绑定列,从而显示根据 Quantity*UnitPrice*(1-Discount)公式计算出来的每个订单的金额。
private void Form1_Load(object sender, System.EventArgs e) { // ... gridControl1.ForceInitialize(); // Create an unbound column. GridColumn unbColumn = gridView1.Columns.AddField("Total"); unbColumn.VisibleIndex = gridView1.Columns.Count; unbColumn.UnboundType = DevExpress.Data.UnboundColumnType.Decimal; // Disable editing. unbColumn.OptionsColumn.AllowEdit = false; // Specify format settings. unbColumn.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric; unbColumn.DisplayFormat.FormatString = "c"; // Customize the appearance settings. unbColumn.AppearanceCell.BackColor = Color.LemonChiffon; } // Returns the total amount for a specific row. decimal getTotalValue(int listSourceRowIndex) { DataRow row = nwindDataSet.Tables["Order Details"].Rows[listSourceRowIndex]; decimal unitPrice = Convert.ToDecimal(row["UnitPrice"]); decimal quantity = Convert.ToDecimal(row["Quantity"]); decimal discount = Convert.ToDecimal(row["Discount"]); return unitPrice * quantity * (1 - discount); } // Provides data for the Total column. private void gridView1_CustomUnboundColumnData(object sender, CustomColumnDataEventArgs e) { if (e.Column.FieldName == "Total" && e.IsGetData) e.Value = getTotalValue(e.ListSourceRowIndex); }编辑器
XtraGrid提供了多种编辑器。这些能够在Grid/CardView/BandedView中使用。在属性编辑器中的In-place Editor Repository可以对编辑器进行管理。在Columns的ColumnEdit中选择该列使用哪个编辑器。
也可以通过代码实现:
RepositoryItemComboBox repositoryItemComboBox_abc=new RepositoryItemComboBox(); // // 对编辑器进行设置 // this.gridColumn1.ColumnEdit = repositoryItemComboBox_abc; //在需要的列里使用定义好的编辑器
相关内容
- .Net报表开发控件XtraReport介绍_基础应用_
- 在 .NET 中使用 FixedTimeEquals 应对计时攻击的例子_实用技巧_
- ASP.NET使用SignalR2实现服务器广播_实用技巧_
- Asp.net通过SignalR2进行实时聊天_实用技巧_
- ASP.NET中HttpContext对象下的属性介绍_基础应用_
- .Net行为型设计模式之解释器模式(Interpreter)_基础应用_
- .Net行为型设计模式之备忘录模式(Memento)_基础应用_
- .Net行为型设计模式之访问者模式(Visitor)_基础应用_
- .Net行为型设计模式之职责链模式(Chain of Responsibility)_基础应用_
- .net任务调度框架FluentScheduler简介_实用技巧_
