This is a migrated thread and some comments may be shown as answers.

Datagridview cells

5 Answers 324 Views
GridView
This is a migrated thread and some comments may be shown as answers.
Guna
Top achievements
Rank 1
Guna asked on 10 Feb 2011, 02:11 PM
Hi  ,

 In a gridview , i want particular cell to have a dropdown and rest as a textbox . how to achieve this ?

5 Answers, 1 is accepted

Sort by
0
Richard Slade
Top achievements
Rank 2
answered on 10 Feb 2011, 02:16 PM
Hello Guna,

Do you mean that you would like one of your columns in the RadGridView to be a drop down? If so, then you can use the radGridView GridViewComboBoxColumn to achieve this. Please take a look at the documentation at this link which will help you set this up.
Let me know if you need more help
Richard
0
Guna
Top achievements
Rank 1
answered on 11 Feb 2011, 05:07 AM
Hi Richard ,

its not the entire column , a particular cell in a column
for example : if there is 4 rows and 4 columns in gridview , say , i want the dropdown in R2C2 cell ..
0
Richard Slade
Top achievements
Rank 2
answered on 11 Feb 2011, 11:40 AM
Hi Guna,

One issue with this is that you would need to do somthing like tag the row that you want so that as you sort etc, the custom editor is only fired for that particular cell (the cell that's on the row with the tag). I'm having a look at it, but at the moment it seems to have some issues. If/when I can get it working, I will let you know.
Can I aslo ask for a little more information as to your requirement as there may be a more suitavble way (it seems a little unusual to want a drop down for only one cell)
Thanks
Richard
0
Accepted
Richard Slade
Top achievements
Rank 2
answered on 11 Feb 2011, 12:26 PM
Hi

Ok, I've found a way to do this. I've actually found it is better to cut it the opposite way. I.e Have a GridViewComboBoxColumn and change the editor to a RadTextBoxEditor for all rows in that column apart from the one you want to remain a RadDropDownListEditor.

Please consider the following code. In the Text1 column, all will be a edited via a RadTextBoxEditor, apart from the one that has a 1 in the Int1 Column

Designer
namespace RadGridView_Basic_C
{
    partial class Form1
    {
        /// <summary> 
        /// Required designer variable. 
        /// </summary> 
        private System.ComponentModel.IContainer components;
  
        /// <summary> 
        /// Clean up any resources being used. 
        /// </summary> 
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> 
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
  
        #region Windows Form Designer generated code
  
        /// <summary> 
        /// Required method for Designer support - do not modify 
        /// the contents of this method with the code editor. 
        /// </summary> 
        private void InitializeComponent()
        {
            this.radGridView1 = new Telerik.WinControls.UI.RadGridView();
            ((System.ComponentModel.ISupportInitialize)(this.radGridView1)).BeginInit();
            this.SuspendLayout();
            // 
            // radGridView1
            // 
            this.radGridView1.BackColor = System.Drawing.SystemColors.Control;
            this.radGridView1.Cursor = System.Windows.Forms.Cursors.Default;
            this.radGridView1.Font = new System.Drawing.Font("Segoe UI", 8.25F);
            this.radGridView1.ForeColor = System.Drawing.SystemColors.ControlText;
            this.radGridView1.ImeMode = System.Windows.Forms.ImeMode.NoControl;
            this.radGridView1.Location = new System.Drawing.Point(0, 0);
            this.radGridView1.Name = "radGridView1";
            this.radGridView1.RightToLeft = System.Windows.Forms.RightToLeft.No;
            this.radGridView1.Size = new System.Drawing.Size(457, 510);
            this.radGridView1.TabIndex = 0;
            this.radGridView1.Text = "radGridView1";
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(459, 515);
            this.Controls.Add(this.radGridView1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);
            ((System.ComponentModel.ISupportInitialize)(this.radGridView1)).EndInit();
            this.ResumeLayout(false);
  
        }
  
        #endregion
  
        private Telerik.WinControls.UI.RadGridView radGridView1;
    }
}

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;
using Telerik.WinControls.UI;
using Telerik.WinControls;
using Telerik.WinControls.Data;
using System.Globalization;
  
  
  
namespace RadGridView_Basic_C
{
    public partial class Form1 : Form
    {
  
  
        private BindingList<MyType> m_myList = new BindingList<MyType>();
  
  
        public Form1()
        {
            InitializeComponent();
        }
  
        private void Form1_Load(object sender, EventArgs e)
        {
            //RadControlSpyForm form = new RadControlSpyForm();
            //form.Show();
  
            this.radGridView1.AutoGenerateColumns = false;
  
            m_myList.Add(new MyType(1, "text1"));
            m_myList.Add(new MyType(2, "text2"));
            m_myList.Add(new MyType(3, "text3"));
            m_myList.Add(new MyType(4, "text4"));
            this.radGridView1.DataSource = m_myList;
             
            this.radGridView1.Columns.Add(new GridViewDecimalColumn("Int1"));
  
            GridViewComboBoxColumn comboColumn = new GridViewComboBoxColumn("Text1");
            comboColumn.DataSource = m_myList;
            comboColumn.DisplayMember = "Text1";
            comboColumn.ValueMember = "Text1";
  
            this.radGridView1.Columns.Add(comboColumn);
  
  
            foreach (GridViewRowInfo row in this.radGridView1.Rows)
            {
                if (Convert.ToInt32(row.Cells["Int1"].Value) == 1)
                {
                    row.Cells["Text1"].Tag = true;
                }
            }
  
            this.radGridView1.EditorRequired += new EditorRequiredEventHandler(radGridView1_EditorRequired);
        }
  
        void radGridView1_EditorRequired(object sender, EditorRequiredEventArgs e)
        {
            if (e.EditorType == typeof(RadDropDownListEditor))
            {
               if (this.radGridView1.CurrentRow.Cells["Text1"].Tag == null)
               {
                    e.EditorType = typeof(RadTextBoxEditor);
               }
            }
        }
  
  
  
        class MyType
        {
            public MyType()
            { }
  
            public MyType(decimal int1, string text1)
            {
                this.Int1 = int1;
                this.Text1 = text1;
            }
  
            public decimal Int1 { get; set; }
            public string Text1 { get; set; }
        }
  
    }
  
}

hope that helps
Richard
0
JigneshGN
Top achievements
Rank 2
answered on 11 Aug 2011, 01:15 PM
Fantastic, it worked.

Thanks.
Tags
GridView
Asked by
Guna
Top achievements
Rank 1
Answers by
Richard Slade
Top achievements
Rank 2
Guna
Top achievements
Rank 1
JigneshGN
Top achievements
Rank 2
Share this question
or