使用编码在c#.net中创建datagridviewbuttoncolumn [英] create datagridviewbuttoncolumn in c#.net using coding
本文介绍了使用编码在c#.net中创建datagridviewbuttoncolumn的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
尊敬的先生/女士
我有问题datagridview.我想基于数据库中的数据创建datagridviewbutton列,输出将是这样的.这意味着像这样的datagridview.
1 2 3 4 5 6 7
8 9 10 11 12 13 14
您能请谁帮我吗
Dear sir/Madam
i have in problem datagridview. i want to create datagridviewbutton column based on data in database that output will be like this. that means datagridview like this .
1 2 3 4 5 6 7
8 9 10 11 12 13 14
could u plz anyone help me
推荐答案
首先创建此类:
First Create this class:
public class ColumnFactory
{
public static DataGridViewColumn CreateColumn(DataColumn dataColumn)
{
DataGridViewColumn column = null;
DataSet dataSet = dataColumn.Table.DataSet;
DataTable parentTable = null;
for (int i = 0; i < dataSet.Relations.Count; i++)
if (dataSet.Relations[i].ChildColumns.ToList<datacolumn>().Contains(dataColumn))
{
parentTable = dataSet.Relations[i].ChildColumns[0].Table;
break;
}
if (parentTable != null)
{
column = new DataGridViewComboBoxColumn()
{
DataSource = parentTable,
// In DataSet I've add a colummn for all tables and named it
// Discriptor And Set Expression. For example for person or
// customer table expression will be
// "FirstName + N' ' + LastName" or "FullName" and
// for company table the expreesion will be "Title" or "Name".
DisplayMember = "Discriptor",
ValueMember = "ID"
};
}
else
column = new DataGridViewTextBoxColumn();
column.HeaderText = column.Name = dataColumn.ColumnName;
return column;
}
}
然后创建自己的GridView:
then create your own GridView:
public class GridView: System.Windows.Forms.DataGridView
{
protected override void OnCreateControl()
{
base.OnCreateControl();
this.AutoGenerateColumns = false;
}
public void RefreshColumns(DataTable table)
{
if (table == null)
return;
this.Columns.Clear();
foreach (DataColumn dataColumn in table.Columns)
this.Columns.Add(ColumnFactory.CreateColumn(dataColumn));
}
protected override void OnDataError(bool displayErrorDialogIfNoHandler, DataGridViewDataErrorEventArgs e)
{
if (MessageBox.Show("The Entries were not valid\nDo you want to continue? ",
"Error",
MessageBoxButtons.YesNo,
MessageBoxIcon.Warning)
e.Cancel = true;
displayErrorDialogIfNoHandler = false;
base.OnDataError(displayErrorDialogIfNoHandler, e);
}
}
依您的表格:
At your Form:
DataGridView.RefreshColumns(DataSet.Tables[this.BindingSource.DataMember]);
这篇关于使用编码在c#.net中创建datagridviewbuttoncolumn的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文