使用编码在c#.net中创建datagridviewbuttoncolumn [英] create datagridviewbuttoncolumn in c#.net using coding

查看:67
本文介绍了使用编码在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆