AD
Administrator
Syncfusion Team
December 20, 2004 02:42 PM UTC
This is a GridControl, correct?
Try this code.
ColStyles[4].CellType = "ComboBox"
ColStyles[4].Datasource = adatasource.Tables["atable"];
ColStyles[4].DisplayMember = "afield";
ColStyles[4].ValueMember = "afield";
SI
simos
December 21, 2004 06:15 AM UTC
>This is a GridControl, correct?
>Try this code.
>
>ColStyles[4].CellType = "ComboBox"
>ColStyles[4].Datasource = adatasource.Tables["atable"];
>ColStyles[4].DisplayMember = "afield";
>ColStyles[4].ValueMember = "afield";
>
>
>
Still the same problem. Furthermore I''ve noticed that the selection bar of the cell''s combobox is trapped into the first option when i try to use down arrow.
Is there any clue?
Thank you very much Clay :)
AD
Administrator
Syncfusion Team
December 21, 2004 10:18 AM UTC
Here is a sample that seems to work OK for me using 2.1.0.9. What are you doing differently?
http://64.78.18.34/Support/Forums/Uploads/GC_Virt_Combo.zip
SI
simos
December 23, 2004 06:04 AM UTC
>Here is a sample that seems to work OK for me using 2.1.0.9. What are you doing differently?
>
>http://64.78.18.34/Support/Forums/Uploads/GC_Virt_Combo.zip
Im using Evaluation Essential Suite 3.
I got read of a Handled=true;
inside GridQueryCellInfoEventHandler
so the Combo works fine.
But still I have to put
DataSource ,DisplayMember ,ValueMember for combo
into GridQueryCellInfoEventHandler
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using Syncfusion.Windows.Forms.Grid;
namespace TestSyncFusion
{
///
/// Summary description for Form1.
///
public class Form1 : System.Windows.Forms.Form
{
private Syncfusion.Windows.Forms.Grid.GridControl gridTest;
private TestSyncFusion.ds_test ds_test1;
///
/// Required designer variable.
///
private System.ComponentModel.Container components = null;
private System.Windows.Forms.TextBox tb_aname;
private System.Windows.Forms.TextBox tb_anumber;
private System.Windows.Forms.Button bt_new;
private System.Windows.Forms.Button bt_save;
private CurrencyManager cm;
private DataSet ds_combotest;
#region SaveCellInfo //handler - needed if you are editing
//save the changes back to the datasource
private void GridSaveCellInfo(object sender, GridSaveCellInfoEventArgs e)
{
try
{
//move the changes back to the external data object
if( e.ColIndex > 0 && e.RowIndex > 0)
{
(this.cm.Current as DataRowView)[e.ColIndex-1]=e.Style.Text;
(this.cm.Current as DataRowView).EndEdit();
}
}
catch(Exception e1){
MessageBox.Show(e1.Message);
}
e.Handled = true;
}
#endregion
#region Required Handlers
//provide the row count from the datasource
void GridQueryRowCount(object sender, GridRowColCountEventArgs e)
{
if (cm==null)
{e.Count=0;return;}
e.Count = this.cm.Count;
e.Handled = true;
}
//provide the column count from the datasource
void GridQueryColCount(object sender, GridRowColCountEventArgs e)
{
e.Count = this.ds_test1.Tables[0].Columns.Count;
e.Handled = true;
}
//provide the data from the datasource
void GridQueryCellInfo(object sender, GridQueryCellInfoEventArgs e)
{
if (e.RowIndex > 0 && e.ColIndex > 0)
{
#region COMMENT_ME
if (e.ColIndex==4)
{
e.Style.CellType="ComboBox";
e.Style.CellValue=typeof(string);
e.Style.DataSource=this.ds_combotest.Tables[0];
e.Style.DisplayMember="TESTVALUE2";
}
#endregion
e.Style.CellValue = (this.cm.List[e.RowIndex - 1] as DataRowView)[e.ColIndex-1];
}
}
#endregion
#region Optional Handlers
//provide the row heights on demand - optional...
void GridQueryRowHeight(object sender, GridRowColSizeEventArgs e)
{
if( e.Index % 2 == 0)
{
e.Size = 20;
e.Handled = true;
}
}
//provide the col widths on demand - optional...
void GridQueryColWidth(object sender, GridRowColSizeEventArgs e)
{
if( e.Index % 3 == 0)
{
e.Size = 40;
e.Handled = true;
}
}
//provide covered range on demand - optional...
void GridQueryCoveredRange(object sender, GridQueryCoveredRangeEventArgs e)
{
//cover odd rows, columns 1 through 3
if (e.RowIndex % 2 == 1 && e.ColIndex >= 1 && e.ColIndex <= 3)
{
e.Range = GridRangeInfo.Cells(e.RowIndex, 1, e.RowIndex, 3);
e.Handled = true;
}
//cover column 6 with odd-even row pairs
if (e.RowIndex > 0 && e.ColIndex == 6)
{
int row = (e.RowIndex-1) /2 * 2 + 1;
int col = e.ColIndex;
e.Range = GridRangeInfo.Cells(row, col, row+1, col);
e.Handled = true;
}
}
#endregion
public Form1()
{
//
// Required for Windows Form Designer support
//
this.ds_combotest=new DataSet();
InitializeComponent();
this.gridTest.ResetVolatileData();
gridTest.QueryCellInfo += new GridQueryCellInfoEventHandler(GridQueryCellInfo);
gridTest.QueryRowCount += new GridRowColCountEventHandler(GridQueryRowCount);
gridTest.QueryColCount += new GridRowColCountEventHandler(GridQueryColCount);
//if you want to edit your data in the grid, you need to
//handle saving data back to the data source...
gridTest.SaveCellInfo += new GridSaveCellInfoEventHandler(GridSaveCellInfo);
this.ds_combotest.Tables.Add("COMBOTEST");
this.ds_combotest.Tables[0].Columns.Add("TESTVALUE1",typeof(int));
this.ds_combotest.Tables[0].Columns.Add("TESTVALUE2",typeof(string));
for(int i=0;i<50;i++)
{
DataRow dr=this.ds_combotest.Tables[0].NewRow();
dr["TESTVALUE1"]=(int) i;
dr["TESTVALUE2"]="New Row "+i.ToString();
this.ds_combotest.Tables[0].Rows.Add(dr);
}
this.ds_combotest.Tables[0].AcceptChanges();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
///
/// Clean up any resources being used.
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
this.gridTest = new Syncfusion.Windows.Forms.Grid.GridControl();
this.ds_test1 = new TestSyncFusion.ds_test();
this.tb_aname = new System.Windows.Forms.TextBox();
this.tb_anumber = new System.Windows.Forms.TextBox();
this.bt_new = new System.Windows.Forms.Button();
this.bt_save = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.gridTest)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.ds_test1)).BeginInit();
this.SuspendLayout();
//
// gridTest
//
this.gridTest.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(255)), ((System.Byte)(255)), ((System.Byte)(192)));
this.gridTest.ColWidthEntries.AddRange(new Syncfusion.Windows.Forms.Grid.GridColWidth[] {
new Syncfusion.Windows.Forms.Grid.GridColWidth(0, 35)});
this.gridTest.Location = new System.Drawing.Point(72, 120);
this.gridTest.Name = "gridTest";
this.gridTest.Size = new System.Drawing.Size(320, 96);
this.gridTest.SmartSizeBox = false;
this.gridTest.TabIndex = 1;
this.gridTest.Text = "gridControl1";
this.gridTest.CurrentCellActivated += new System.EventHandler(this.gridTest_CurrentCellActivated);
//
// ds_test1
//
this.ds_test1.DataSetName = "ds_test";
this.ds_test1.Locale = new System.Globalization.CultureInfo("en-US");
//
// tb_aname
//
this.tb_aname.Location = new System.Drawing.Point(72, 24);
this.tb_aname.Name = "tb_aname";
this.tb_aname.Size = new System.Drawing.Size(416, 20);
this.tb_aname.TabIndex = 2;
this.tb_aname.Text = "";
//
// tb_anumber
//
this.tb_anumber.Location = new System.Drawing.Point(72, 56);
this.tb_anumber.Name = "tb_anumber";
this.tb_anumber.Size = new System.Drawing.Size(200, 20);
this.tb_anumber.TabIndex = 3;
this.tb_anumber.Text = "";
//
// bt_new
//
this.bt_new.Location = new System.Drawing.Point(416, 56);
this.bt_new.Name = "bt_new";
this.bt_new.Size = new System.Drawing.Size(72, 24);
this.bt_new.TabIndex = 5;
this.bt_new.Text = "&New";
this.bt_new.Click += new System.EventHandler(this.bt_new_Click);
//
// bt_save
//
this.bt_save.Location = new System.Drawing.Point(416, 96);
this.bt_save.Name = "bt_save";
this.bt_save.Size = new System.Drawing.Size(72, 24);
this.bt_save.TabIndex = 6;
this.bt_save.Text = "&Save";
this.bt_save.Click += new System.EventHandler(this.bt_save_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(576, 242);
this.Controls.Add(this.bt_save);
this.Controls.Add(this.bt_new);
this.Controls.Add(this.tb_anumber);
this.Controls.Add(this.tb_aname);
this.Controls.Add(this.gridTest);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
((System.ComponentModel.ISupportInitialize)(this.gridTest)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.ds_test1)).EndInit();
this.ResumeLayout(false);
}
#endregion
///
/// The main entry point for the application.
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
cm=(CurrencyManager)this.BindingContext[this.ds_test1,"TEST"];
this.tb_anumber.DataBindings.Add("Text",this.ds_test1,"TEST.ANUMBER");
this.tb_aname.DataBindings.Add("Text",this.ds_test1,"TEST.ASTRING");
this.gridTest.Model.ColStyles[1].CellValueType=typeof(string);
this.gridTest.Model.ColStyles[3].CellValueType=typeof(float);
this.gridTest.Model.ColStyles[4].CellValueType=typeof(string);
#region UNCOMMENT_ME
/*
this.gridTest.Model.ColStyles[4].CellType="ComboBox";
this.gridTest.Model.ColStyles[4].DataSource=this.ds_combotest.Tables[0];
this.gridTest.Model.ColStyles[4].DisplayMember="TESTVALUE2";
this.gridTest.Model.ColStyles[4].ValueMember="TESTVALUE2";
*/
#endregion
}
private void bt_new_Click(object sender, System.EventArgs e)
{
this.cm.AddNew();
this.tb_aname.Focus();
}
private void bt_save_Click(object sender, System.EventArgs e)
{
(this.cm.Current as DataRowView).EndEdit();
(this.cm.Current as DataRowView).Row.AcceptChanges();
this.gridTest.Refresh();
}
private void gridTest_CurrentCellActivated(object sender, System.EventArgs e)
{
this.cm.Position=this.gridTest.CurrentCell.RowIndex-1;
}
}
}
AD
Administrator
Syncfusion Team
June 17, 2005 01:32 AM UTC
>
>
>>Here is a sample that seems to work OK for me using 2.1.0.9. What are you doing differently?
>>
>>http://64.78.18.34/Support/Forums/Uploads/GC_Virt_Combo.zip
>
>
>Im using Evaluation Essential Suite 3.
>I got read of a Handled=true;
>inside GridQueryCellInfoEventHandler
>so the Combo works fine.
>
>But still I have to put
>DataSource ,DisplayMember ,ValueMember for combo
>into GridQueryCellInfoEventHandler
>
>
>
>
>using System;
>using System.Drawing;
>using System.Collections;
>using System.ComponentModel;
>using System.Windows.Forms;
>using System.Data;
>using Syncfusion.Windows.Forms.Grid;
>
>namespace TestSyncFusion
>{
> ///
> /// Summary description for Form1.
> ///
> public class Form1 : System.Windows.Forms.Form
> {
> private Syncfusion.Windows.Forms.Grid.GridControl gridTest;
> private TestSyncFusion.ds_test ds_test1;
> ///
> /// Required designer variable.
> ///
> private System.ComponentModel.Container components = null;
> private System.Windows.Forms.TextBox tb_aname;
> private System.Windows.Forms.TextBox tb_anumber;
> private System.Windows.Forms.Button bt_new;
> private System.Windows.Forms.Button bt_save;
>
> private CurrencyManager cm;
>
> private DataSet ds_combotest;
>
>
>
>
> #region SaveCellInfo //handler - needed if you are editing
> //save the changes back to the datasource
> private void GridSaveCellInfo(object sender, GridSaveCellInfoEventArgs e)
> {
> try
> {
> //move the changes back to the external data object
> if( e.ColIndex > 0 && e.RowIndex > 0)
> {
> (this.cm.Current as DataRowView)[e.ColIndex-1]=e.Style.Text;
> (this.cm.Current as DataRowView).EndEdit();
>
> }
> }
> catch(Exception e1){
> MessageBox.Show(e1.Message);
> }
> e.Handled = true;
> }
> #endregion
>
> #region Required Handlers
> //provide the row count from the datasource
> void GridQueryRowCount(object sender, GridRowColCountEventArgs e)
> {
> if (cm==null)
> {e.Count=0;return;}
> e.Count = this.cm.Count;
> e.Handled = true;
> }
>
>
> //provide the column count from the datasource
> void GridQueryColCount(object sender, GridRowColCountEventArgs e)
> {
> e.Count = this.ds_test1.Tables[0].Columns.Count;
> e.Handled = true;
> }
>
>
> //provide the data from the datasource
> void GridQueryCellInfo(object sender, GridQueryCellInfoEventArgs e)
> {
> if (e.RowIndex > 0 && e.ColIndex > 0)
> {
>
> #region COMMENT_ME
> if (e.ColIndex==4)
> {
> e.Style.CellType="ComboBox";
> e.Style.CellValue=typeof(string);
> e.Style.DataSource=this.ds_combotest.Tables[0];
> e.Style.DisplayMember="TESTVALUE2";
> }
> #endregion
>
> e.Style.CellValue = (this.cm.List[e.RowIndex - 1] as DataRowView)[e.ColIndex-1];
> }
> }
>
> #endregion
>
> #region Optional Handlers
> //provide the row heights on demand - optional...
> void GridQueryRowHeight(object sender, GridRowColSizeEventArgs e)
> {
> if( e.Index % 2 == 0)
> {
> e.Size = 20;
> e.Handled = true;
> }
> }
>
>
> //provide the col widths on demand - optional...
> void GridQueryColWidth(object sender, GridRowColSizeEventArgs e)
> {
> if( e.Index % 3 == 0)
> {
> e.Size = 40;
> e.Handled = true;
> }
> }
>
>
> //provide covered range on demand - optional...
> void GridQueryCoveredRange(object sender, GridQueryCoveredRangeEventArgs e)
> {
> //cover odd rows, columns 1 through 3
> if (e.RowIndex % 2 == 1 && e.ColIndex >= 1 && e.ColIndex <= 3)
> {
> e.Range = GridRangeInfo.Cells(e.RowIndex, 1, e.RowIndex, 3);
> e.Handled = true;
> }
>
> //cover column 6 with odd-even row pairs
> if (e.RowIndex > 0 && e.ColIndex == 6)
> {
> int row = (e.RowIndex-1) /2 * 2 + 1;
> int col = e.ColIndex;
> e.Range = GridRangeInfo.Cells(row, col, row+1, col);
> e.Handled = true;
> }
> }
>
> #endregion
>
>
>
> public Form1()
> {
> //
> // Required for Windows Form Designer support
> //
> this.ds_combotest=new DataSet();
>
> InitializeComponent();
> this.gridTest.ResetVolatileData();
>
> gridTest.QueryCellInfo += new GridQueryCellInfoEventHandler(GridQueryCellInfo);
> gridTest.QueryRowCount += new GridRowColCountEventHandler(GridQueryRowCount);
> gridTest.QueryColCount += new GridRowColCountEventHandler(GridQueryColCount);
>
> //if you want to edit your data in the grid, you need to
> //handle saving data back to the data source...
> gridTest.SaveCellInfo += new GridSaveCellInfoEventHandler(GridSaveCellInfo);
>
>
> this.ds_combotest.Tables.Add("COMBOTEST");
> this.ds_combotest.Tables[0].Columns.Add("TESTVALUE1",typeof(int));
> this.ds_combotest.Tables[0].Columns.Add("TESTVALUE2",typeof(string));
>
>
> for(int i=0;i<50;i++)
> {
> DataRow dr=this.ds_combotest.Tables[0].NewRow();
> dr["TESTVALUE1"]=(int) i;
> dr["TESTVALUE2"]="New Row "+i.ToString();
> this.ds_combotest.Tables[0].Rows.Add(dr);
>
>
>
>
> }
>
> this.ds_combotest.Tables[0].AcceptChanges();
>
>
>
> //
> // TODO: Add any constructor code after InitializeComponent call
> //
> }
>
> ///
> /// Clean up any resources being used.
> ///
> protected override void Dispose( bool disposing )
> {
> if( disposing )
> {
> if (components != null)
> {
> components.Dispose();
> }
> }
> base.Dispose( disposing );
> }
>
> #region Windows Form Designer generated code
> ///
> /// Required method for Designer support - do not modify
> /// the contents of this method with the code editor.
> ///
> private void InitializeComponent()
> {
> this.gridTest = new Syncfusion.Windows.Forms.Grid.GridControl();
> this.ds_test1 = new TestSyncFusion.ds_test();
> this.tb_aname = new System.Windows.Forms.TextBox();
> this.tb_anumber = new System.Windows.Forms.TextBox();
> this.bt_new = new System.Windows.Forms.Button();
> this.bt_save = new System.Windows.Forms.Button();
> ((System.ComponentModel.ISupportInitialize)(this.gridTest)).BeginInit();
> ((System.ComponentModel.ISupportInitialize)(this.ds_test1)).BeginInit();
> this.SuspendLayout();
> //
> // gridTest
> //
> this.gridTest.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(255)), ((System.Byte)(255)), ((System.Byte)(192)));
> this.gridTest.ColWidthEntries.AddRange(new Syncfusion.Windows.Forms.Grid.GridColWidth[] {
> new Syncfusion.Windows.Forms.Grid.GridColWidth(0, 35)});
> this.gridTest.Location = new System.Drawing.Point(72, 120);
> this.gridTest.Name = "gridTest";
> this.gridTest.Size = new System.Drawing.Size(320, 96);
> this.gridTest.SmartSizeBox = false;
> this.gridTest.TabIndex = 1;
> this.gridTest.Text = "gridControl1";
> this.gridTest.CurrentCellActivated += new System.EventHandler(this.gridTest_CurrentCellActivated);
> //
> // ds_test1
> //
> this.ds_test1.DataSetName = "ds_test";
> this.ds_test1.Locale = new System.Globalization.CultureInfo("en-US");
> //
> // tb_aname
> //
> this.tb_aname.Location = new System.Drawing.Point(72, 24);
> this.tb_aname.Name = "tb_aname";
> this.tb_aname.Size = new System.Drawing.Size(416, 20);
> this.tb_aname.TabIndex = 2;
> this.tb_aname.Text = "";
> //
> // tb_anumber
> //
> this.tb_anumber.Location = new System.Drawing.Point(72, 56);
> this.tb_anumber.Name = "tb_anumber";
> this.tb_anumber.Size = new System.Drawing.Size(200, 20);
> this.tb_anumber.TabIndex = 3;
> this.tb_anumber.Text = "";
> //
> // bt_new
> //
> this.bt_new.Location = new System.Drawing.Point(416, 56);
> this.bt_new.Name = "bt_new";
> this.bt_new.Size = new System.Drawing.Size(72, 24);
> this.bt_new.TabIndex = 5;
> this.bt_new.Text = "&New";
> this.bt_new.Click += new System.EventHandler(this.bt_new_Click);
> //
> // bt_save
> //
> this.bt_save.Location = new System.Drawing.Point(416, 96);
> this.bt_save.Name = "bt_save";
> this.bt_save.Size = new System.Drawing.Size(72, 24);
> this.bt_save.TabIndex = 6;
> this.bt_save.Text = "&Save";
> this.bt_save.Click += new System.EventHandler(this.bt_save_Click);
> //
> // Form1
> //
> this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
> this.ClientSize = new System.Drawing.Size(576, 242);
> this.Controls.Add(this.bt_save);
> this.Controls.Add(this.bt_new);
> this.Controls.Add(this.tb_anumber);
> this.Controls.Add(this.tb_aname);
> this.Controls.Add(this.gridTest);
> this.Name = "Form1";
> this.Text = "Form1";
> this.Load += new System.EventHandler(this.Form1_Load);
> ((System.ComponentModel.ISupportInitialize)(this.gridTest)).EndInit();
> ((System.ComponentModel.ISupportInitialize)(this.ds_test1)).EndInit();
> this.ResumeLayout(false);
>
> }
> #endregion
>
> ///
> /// The main entry point for the application.
> ///
> [STAThread]
> static void Main()
> {
> Application.Run(new Form1());
> }
>
> private void Form1_Load(object sender, System.EventArgs e)
> {
> cm=(CurrencyManager)this.BindingContext[this.ds_test1,"TEST"];
>
>
>
>
> this.tb_anumber.DataBindings.Add("Text",this.ds_test1,"TEST.ANUMBER");
> this.tb_aname.DataBindings.Add("Text",this.ds_test1,"TEST.ASTRING");
>
>
> this.gridTest.Model.ColStyles[1].CellValueType=typeof(string);
>
> this.gridTest.Model.ColStyles[3].CellValueType=typeof(float);
> this.gridTest.Model.ColStyles[4].CellValueType=typeof(string);
>
>
> #region UNCOMMENT_ME
> /*
> this.gridTest.Model.ColStyles[4].CellType="ComboBox";
> this.gridTest.Model.ColStyles[4].DataSource=this.ds_combotest.Tables[0];
> this.gridTest.Model.ColStyles[4].DisplayMember="TESTVALUE2";
> this.gridTest.Model.ColStyles[4].ValueMember="TESTVALUE2";
> */
> #endregion
>
>
>
>
> }
>
> private void bt_new_Click(object sender, System.EventArgs e)
> {
> this.cm.AddNew();
> this.tb_aname.Focus();
> }
>
> private void bt_save_Click(object sender, System.EventArgs e)
> {
> (this.cm.Current as DataRowView).EndEdit();
> (this.cm.Current as DataRowView).Row.AcceptChanges();
> this.gridTest.Refresh();
>
>
> }
>
>
> private void gridTest_CurrentCellActivated(object sender, System.EventArgs e)
> {
> this.cm.Position=this.gridTest.CurrentCell.RowIndex-1;
> }
>
>
>
> }
>
>
>
>
>}