private void Form1_Load(object sender, EventArgs e)
{
cm= new ComboBox();
cm.Dock = DockStyle.Fill;
this.sqlDataAdapter1.Fill(dsTable1, "Orders");
this.dbgOrderView.SetDataBinding(dsTable1, "Orders");
//ComBox绑定的数据
cm.DataSource = dsTable1.Orders;
//填充的是EmployyeeID 是:1,2,3,4,5
cm.DisplayMember = "EmployeeID";
DataGridTextBoxColumn dgTextBoxColumn=(DataGridTextBoxColumn)dbgOrderView.TableStyles[0].GridColumnStyles[1];
cm.SelectionChangeCommitted+= new EventHandler(dgComboxBoxColumn_SelectionChangeCommitted);
dgTextBoxColumn.TextBox.Controls.Add(cm);
}
private void dgComboxBoxColumn_SelectionChangeCommitted(object sender, EventArgs e)
{
//这里的str值是System.Data.DataRowView 类型是string
string str=((ComboBox)sender).SelectedItem.ToString();
//type是System.String类型
string type=str.GetType().ToString();
Console.WriteLine("type="+type);
//到这会发生格式异常 FormatExprsion
int i= int.Parse(str);
// Console.WriteLine(i); // dbgOrderView[this.dbgOrderView.CurrentCell] = str;
}
{
cm= new ComboBox();
cm.Dock = DockStyle.Fill;
this.sqlDataAdapter1.Fill(dsTable1, "Orders");
this.dbgOrderView.SetDataBinding(dsTable1, "Orders");
//ComBox绑定的数据
cm.DataSource = dsTable1.Orders;
//填充的是EmployyeeID 是:1,2,3,4,5
cm.DisplayMember = "EmployeeID";
DataGridTextBoxColumn dgTextBoxColumn=(DataGridTextBoxColumn)dbgOrderView.TableStyles[0].GridColumnStyles[1];
cm.SelectionChangeCommitted+= new EventHandler(dgComboxBoxColumn_SelectionChangeCommitted);
dgTextBoxColumn.TextBox.Controls.Add(cm);
}
private void dgComboxBoxColumn_SelectionChangeCommitted(object sender, EventArgs e)
{
//这里的str值是System.Data.DataRowView 类型是string
string str=((ComboBox)sender).SelectedItem.ToString();
//type是System.String类型
string type=str.GetType().ToString();
Console.WriteLine("type="+type);
//到这会发生格式异常 FormatExprsion
int i= int.Parse(str);
// Console.WriteLine(i); // dbgOrderView[this.dbgOrderView.CurrentCell] = str;
}
解决方案 »
- 列表输出值
- C#操作Excel怎样才能不产生“当前所要打开的文档含有到其他文件的连接”的提示?
- 唉,寒心,贴子挂在这里三四天了,找一个人介绍一本有用的书都没有,看来.NET也不咋的,转学其它的了
- datagrid 分页无法实现,不知道是啥子原因! 先谢谢了
- DevExpress.XtraGrid 我有 数量、价格、汇总三个字段,现在我想要在改数量、价格时自动计算出汇总,请问那个事件比较好?
- 哪位朋友有"生成简拚"的函数?
- MDI的的一个问题
- 请问,C#能用来作UG二次开发吗? <------ [急]
- 放分,那里有Windows.Net可供下载
- 急:大家帮我出出主意!
- 怎么解决一次向数据表中写入大量数据时的效率问题?
- winform 中右键菜单的问题
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;namespace DataGridCombBox
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.DataGrid dgdFunctionArea;
private DataTable dtblFunctionalArea;
private System.Windows.Forms.Button buttonFocus;
private System.Windows.Forms.StatusBar statusBar1;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null; public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent(); //
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
this.PopulateGrid();
} /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
} #region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.dgdFunctionArea = new System.Windows.Forms.DataGrid();
this.buttonFocus = new System.Windows.Forms.Button();
this.statusBar1 = new System.Windows.Forms.StatusBar();
((System.ComponentModel.ISupportInitialize)(this.dgdFunctionArea)).BeginInit();
this.SuspendLayout();
//
// dgdFunctionArea
//
this.dgdFunctionArea.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.dgdFunctionArea.DataMember = "";
this.dgdFunctionArea.HeaderForeColor = System.Drawing.SystemColors.ControlText;
this.dgdFunctionArea.Location = new System.Drawing.Point(8, 56);
this.dgdFunctionArea.Name = "dgdFunctionArea";
this.dgdFunctionArea.Size = new System.Drawing.Size(496, 256);
this.dgdFunctionArea.TabIndex = 0;
//
// buttonFocus
//
this.buttonFocus.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonFocus.Location = new System.Drawing.Point(288, 320);
this.buttonFocus.Name = "buttonFocus";
this.buttonFocus.Size = new System.Drawing.Size(80, 24);
this.buttonFocus.TabIndex = 1;
this.buttonFocus.Text = "获取焦点";
this.buttonFocus.Click += new System.EventHandler(this.buttonFocus_Click);
//
// statusBar1
//
this.statusBar1.Location = new System.Drawing.Point(0, 351);
this.statusBar1.Name = "statusBar1";
this.statusBar1.Size = new System.Drawing.Size(512, 22);
this.statusBar1.TabIndex = 2;
this.statusBar1.Text = "作者:刘文博 email:[email protected]";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(512, 373);
this.Controls.Add(this.statusBar1);
this.Controls.Add(this.buttonFocus);
this.Controls.Add(this.dgdFunctionArea);
this.Name = "Form1";
this.Text = "grid控件下拉列表框和日历控件演示";
((System.ComponentModel.ISupportInitialize)(this.dgdFunctionArea)).EndInit();
this.ResumeLayout(false); }
#endregion /// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
} //初始化datagrid
private void PopulateGrid()
{
this.dtblFunctionalArea = new DataTable("FunctionArea");
string[] arrstrFunctionArea = new string[2]{"列表框", "普通文本"};
DataColumn dtCol = null; for (int i=0; i<2; i++)
{
dtCol = new DataColumn(arrstrFunctionArea[i], Type.GetType("System.String"));
dtCol.DefaultValue = "";
this.dtblFunctionalArea.Columns.Add(dtCol);
} DataColumn dtDate = new DataColumn("日期控件");
dtDate.DataType = Type.GetType("System.DateTime");
dtDate.DefaultValue = DateTime.Now;
this.dtblFunctionalArea.Columns.Add(dtDate); DataColumn dtcCheck = new DataColumn("复选框");
dtcCheck.DataType = Type.GetType("System.Boolean");
dtcCheck.DefaultValue = false;
this.dtblFunctionalArea.Columns.Add(dtcCheck); this.dgdFunctionArea.DataSource = this.dtblFunctionalArea; if (!this.dgdFunctionArea.TableStyles.Contains("FunctionArea"))
{
DataGridTableStyle dgdtblStyle = new DataGridTableStyle();
dgdtblStyle.MappingName = this.dtblFunctionalArea.TableName;
this.dgdFunctionArea.TableStyles.Add(dgdtblStyle);
dgdtblStyle.RowHeadersVisible = false;
dgdtblStyle.HeaderBackColor = Color.LightSteelBlue;
dgdtblStyle.AllowSorting = false;
dgdtblStyle.HeaderForeColor = Color.White;
dgdtblStyle.HeaderFont = new Font("Microsoft Sans Serif", 9F, FontStyle.Bold, GraphicsUnit.Point, (Byte)(0));
dgdtblStyle.GridLineColor = Color.DarkGray;
dgdtblStyle.PreferredRowHeight = 22;
dgdFunctionArea.BackgroundColor = Color.White; GridColumnStylesCollection colStyle = dgdFunctionArea.TableStyles[0].GridColumnStyles;
colStyle[0].Width = 100;
colStyle[1].Width = 50;
colStyle[2].Width = 100;
colStyle[3].Width = 80;
} DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)dgdFunctionArea.TableStyles[0].GridColumnStyles[0];
ComboBox cmbFunctionArea = new ComboBox();
cmbFunctionArea.Items.AddRange(new object[]{"选项一", "选项二", "选项三"});
cmbFunctionArea.DropDownStyle = ComboBoxStyle.DropDownList;
cmbFunctionArea.Dock = DockStyle.Fill; cmbFunctionArea.SelectionChangeCommitted += new EventHandler(cmbFunctionArea_SelectionChangeCommitted);
dgtb.TextBox.Controls.Add(cmbFunctionArea); DataGridTextBoxColumn dgtb1 = (DataGridTextBoxColumn)dgdFunctionArea.TableStyles[0].GridColumnStyles[2];
DateTimePicker dtp = new DateTimePicker();
dtp.Format = DateTimePickerFormat.Short;
dtp.Dock = DockStyle.Fill; dtp.CloseUp += new EventHandler(dtp_CloseUp);
dgtb1.TextBox.Controls.Add(dtp);
} private void GetFocus (int row, int col)
{
this.dgdFunctionArea.Focus();
DataGridCell dgc = new DataGridCell(row, col);
this.dgdFunctionArea.CurrentCell = dgc;
DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)dgdFunctionArea.TableStyles[0].GridColumnStyles[col];
dgtb.TextBox.Focus();
} private void buttonFocus_Click(object sender, System.EventArgs e)
{
GetFocus (2,1);
} private void cmbFunctionArea_SelectionChangeCommitted(object sender, EventArgs e)
{
this.dgdFunctionArea[this.dgdFunctionArea.CurrentCell] = ((ComboBox)sender).SelectedItem.ToString();
} private void dtp_CloseUp(object sender, EventArgs e)
{
this.dgdFunctionArea[this.dgdFunctionArea.CurrentCell] = ((DateTimePicker)sender).Value.ToString();
}
}
}你可以参考http://download.csdn.net/source/283860