我正在开发基于 Windows 的应用程序,在我的一种形式中,我有 DevExpress XtraGrid 控件,带有 CheckBox 列和 Name 列,因此用户可以检查他们想要的主题并保存它们。
这是屏幕截图:
首先,我想知道如何设置 GridControl 的 KeyFieldName(如在 Aspx GridView 中),因为我在属性中找不到它。其次,当我的用户选择一些行并单击“添加”按钮时,我想通过 KeyField 将所有选定的行转换为 XML 并将其保存到 DB。
女贞!试试这个:
DataRow row = gridView2.GetDataRow(gridView2.FocusedRowHandle);
看看这里:http ://documentation.devexpress.com/#WindowsForms/CustomDocument753
for(int i = view.SelectedRowsCount - 1; i >= 0; i--) {
int row = view.GetSelectedRows()[i];
// your code here
}
或出口选择,看这里: http: //www.devexpress.com/Support/Center/p/E4352.aspx
这是示例: Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable("table1");
dt.Columns.Add("ID", Type.GetType("System.Int32"));
dt.Columns.Add("CHECK", Type.GetType("System.Boolean"));
dt.Columns.Add("DAY");
for (int i = 0; i < 10; i++)
dt.Rows.Add(new object[] {i, false, "Option " + i});
gridControl1.DataSource = dt;
}
/// <summary>
/// Extract checked rows
/// </summary>
private void simpleButton1_Click(object sender, EventArgs e)
{
memoEdit1.Text = string.Empty;
StringBuilder sb = new StringBuilder();
foreach (var row in ((DataTable)gridControl1.DataSource).AsEnumerable().Where(row => (bool)row["CHECK"]))
sb.Append(String.Format("{0}, {1}, {2}\r\n", row["ID"], row["CHECK"], row["DAY"]));
memoEdit1.Text = sb.ToString();
}
/// <summary>
/// Extract selected rows
/// </summary>
private void simpleButton2_Click(object sender, EventArgs e)
{
memoEdit1.Text = string.Empty;
StringBuilder sb = new StringBuilder();
foreach (int rowIndex in gridView1.GetSelectedRows())
{
DataRow row = gridView1.GetDataRow(rowIndex);
sb.Append(String.Format("{0}, {1}, {2}\r\n", row["ID"], row["CHECK"], row["DAY"]));
}
memoEdit1.Text = sb.ToString();
}
}
}
Form1.Designer.cs
namespace WindowsFormsApplication1
{
partial class Form1
{
private System.ComponentModel.IContainer components = null;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region designer
private void InitializeComponent()
{
this.gridControl1 = new DevExpress.XtraGrid.GridControl();
this.gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
this.gridColumn1 = new DevExpress.XtraGrid.Columns.GridColumn();
this.repositoryItemCheckEdit1 = new DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit();
this.gridColumn2 = new DevExpress.XtraGrid.Columns.GridColumn();
this.simpleButton1 = new DevExpress.XtraEditors.SimpleButton();
this.simpleButton2 = new DevExpress.XtraEditors.SimpleButton();
this.memoEdit1 = new DevExpress.XtraEditors.MemoEdit();
((System.ComponentModel.ISupportInitialize)(this.gridControl1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gridView1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.repositoryItemCheckEdit1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.memoEdit1.Properties)).BeginInit();
this.SuspendLayout();
//
// gridControl1
//
this.gridControl1.Location = new System.Drawing.Point(13, 13);
this.gridControl1.MainView = this.gridView1;
this.gridControl1.Name = "gridControl1";
this.gridControl1.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] {
this.repositoryItemCheckEdit1});
this.gridControl1.Size = new System.Drawing.Size(350, 329);
this.gridControl1.TabIndex = 0;
this.gridControl1.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
this.gridView1});
//
// gridView1
//
this.gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] {
this.gridColumn1,
this.gridColumn2});
this.gridView1.GridControl = this.gridControl1;
this.gridView1.Name = "gridView1";
this.gridView1.OptionsSelection.MultiSelect = true;
//
// gridColumn1
//
this.gridColumn1.Caption = "gridColumn1";
this.gridColumn1.ColumnEdit = this.repositoryItemCheckEdit1;
this.gridColumn1.FieldName = "CHECK";
this.gridColumn1.Name = "gridColumn1";
this.gridColumn1.Visible = true;
this.gridColumn1.VisibleIndex = 0;
//
// repositoryItemCheckEdit1
//
this.repositoryItemCheckEdit1.AutoHeight = false;
this.repositoryItemCheckEdit1.Name = "repositoryItemCheckEdit1";
//
// gridColumn2
//
this.gridColumn2.Caption = "gridColumn2";
this.gridColumn2.FieldName = "DAY";
this.gridColumn2.Name = "gridColumn2";
this.gridColumn2.Visible = true;
this.gridColumn2.VisibleIndex = 1;
//
// simpleButton1
//
this.simpleButton1.Location = new System.Drawing.Point(369, 12);
this.simpleButton1.Name = "simpleButton1";
this.simpleButton1.Size = new System.Drawing.Size(75, 23);
this.simpleButton1.TabIndex = 1;
this.simpleButton1.Text = "Checked >>";
this.simpleButton1.Click += new System.EventHandler(this.simpleButton1_Click);
//
// simpleButton2
//
this.simpleButton2.Location = new System.Drawing.Point(369, 41);
this.simpleButton2.Name = "simpleButton2";
this.simpleButton2.Size = new System.Drawing.Size(75, 23);
this.simpleButton2.TabIndex = 2;
this.simpleButton2.Text = "Selected >>";
this.simpleButton2.Click += new System.EventHandler(this.simpleButton2_Click);
//
// memoEdit1
//
this.memoEdit1.Location = new System.Drawing.Point(450, 11);
this.memoEdit1.Name = "memoEdit1";
this.memoEdit1.Size = new System.Drawing.Size(299, 331);
this.memoEdit1.TabIndex = 3;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(964, 665);
this.Controls.Add(this.memoEdit1);
this.Controls.Add(this.simpleButton2);
this.Controls.Add(this.simpleButton1);
this.Controls.Add(this.gridControl1);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
((System.ComponentModel.ISupportInitialize)(this.gridControl1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.gridView1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.repositoryItemCheckEdit1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.memoEdit1.Properties)).EndInit();
this.ResumeLayout(false);
}
#endregion
private DevExpress.XtraGrid.GridControl gridControl1;
private DevExpress.XtraGrid.Views.Grid.GridView gridView1;
private DevExpress.XtraGrid.Columns.GridColumn gridColumn1;
private DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit repositoryItemCheckEdit1;
private DevExpress.XtraGrid.Columns.GridColumn gridColumn2;
private DevExpress.XtraEditors.SimpleButton simpleButton1;
private DevExpress.XtraEditors.SimpleButton simpleButton2;
private DevExpress.XtraEditors.MemoEdit memoEdit1;
}
}