Search code examples
c#winformsxtragrid

How to set DevExress XtraGridControl Keyfieldname and use it in code behind


I am developing Windows based App and in one of my forms I have DevExpress XtraGrid Control with CheckBox column and Name Column, so users can check the subjects they want and Save them.

Here is the screen shot:

enter image description here

First of all I want to know how to set KeyFieldName (like in Aspx GridView) of GridControl, because I couldn't find it in properties. Second, when my users select some rows and click Add button, I would like to get all the selected rows' by KeyField into XML and save it to DB.


Solution

  • Privet! Try this:

    DataRow row = gridView2.GetDataRow(gridView2.FocusedRowHandle);
    

    And look here: http://documentation.devexpress.com/#WindowsForms/CustomDocument753

    for(int i = view.SelectedRowsCount - 1; i >= 0; i--) {
        int row = view.GetSelectedRows()[i];
        // your code here
    }
    

    or export selection, look here: http://www.devexpress.com/Support/Center/p/E4352.aspx

    Here is the sample: 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;
        }
    }