簡體   English   中英

C# 為 DataGridView 添加 Combobox 和復選框組合 SQL 表

[英]C# Add Combobox and Checkbox for DataGridView Combined SQL Table

我在 SQL 數據庫中有一個如下表。 Devicereg

  No   |    Parameter | DataTyp  |  Enable  | 
  1            xxxx      Int         True
  2            yyyy      Int         True
  3            tttt      String      False

我想在 DataGridView 中顯示這些數據,它的 DataTyp 列想要添加 Combobox 和默認值表格單元格值,啟用列想要添加一個帶有默認值表格單元格值的復選框。

Combobox 要添加以下列表,默認值為以下值之一。

  • 詮釋
  • 細繩
  • 花車

以下代碼,Combobox 值將所有列值添加到一個組合框中。

代碼:

    string connetionString = null;
        SqlConnection connection;
        SqlDataAdapter adapter = new SqlDataAdapter();
        string sql = null;
        bool st = false;

        DataSet ds = new DataSet();
        connection = new SqlConnection(connetionString);
        sql = "select * from Devicereg";
            try
            {
                connection.Open();
                adapter.SelectCommand = new SqlCommand(sql, connection);
                adapter.Fill(ds);
                connection.Close();
                dataGridView1.DataSource = null;
                dataGridView1.ColumnCount = 0;
         
                dataGridView1.DataSource = ds.Tables[0];

                DataGridViewComboBoxColumn dc = new DataGridViewComboBoxColumn();
                dc.DataSource = ds.Tables[0];
                dc.ValueMember = "Datatyp";

                dataGridView1.Columns.Add(dc);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

示例照片:

在此處輸入圖像描述

編輯1:

我已經完成了,但是如何在下拉列表中只顯示定義的項目。

代碼:

DataGridViewComboBoxColumn dc = new DataGridViewComboBoxColumn();
dc.DataSource = ds.Tables[0];
dc.DataPropertyName = "Datatyp";
dc.ValueMember = "Datatyp";
dc.DisplayMember = "Datatyp";

我有 36 行,所有行 Datatyp 值都顯示。 我想要 select 的特定項目,比如 Int、Flort、Strings。

Output:

在此處輸入圖像描述

編輯2:

如果我像下面的代碼一樣設置,我會收到錯誤消息。

DataGridViewComboBoxColumn dc = new DataGridViewComboBoxColumn();
dc.DataSource = new List<string> { "Int", "String", "Flort" };
dc.DataPropertyName = "Datatyp";
dc.ValueMember = "Datatyp";
dc.DisplayMember = "Datatyp";

錯誤:

在此處輸入圖像描述

要將DataTyp從數據庫導入到DataGridViewComboBoxColumn ,請參考以下步驟。

首先,將列添加到 datagridview。 DataTyp的 columntype 設置為DataGridViewComboBoxColumn ,並將其 DataSource 設置為:

在此處輸入圖像描述

接下來,將Enable columntype 設置為DataGridViewCheckBoxColumn

或通過代碼:

var colNo = new DataGridViewTextBoxColumn
{
    HeaderText = "No",
    Name = "No"
};
var colParameter = new DataGridViewTextBoxColumn
{
    HeaderText = "Parameter",
    Name = "Parameter"
};
var colDataTyp = new DataGridViewComboBoxColumn
{
    HeaderText = "DataTyp",
    Name = "DataTyp",
    DataSource = new List<string> { "Int", "String", "Float" }
};
var colEnable = new DataGridViewCheckBoxColumn
{
    HeaderText = "Enable",
    Name = "Enable"
};

dataGridView1.Columns.AddRange(new DataGridViewColumn[] { colNo, colParameter, colDataTyp, colEnable });

然后通過下面的代碼填充datagridview。

DataSet ds;
string connetionString = @"Connection String";
using (SqlConnection conn = new SqlConnection(connetionString))
{
    SqlDataAdapter sda = new SqlDataAdapter("Select * From Devicereg", conn);
    ds = new DataSet();
    sda.Fill(ds, "T1");
}

DataGridViewComboBoxCell typeCell;

foreach (DataRow row in ds.Tables[0].Rows)
{
    int index = dataGridView1.Rows.Add();
    dataGridView1.Rows[index].Cells["No"].Value = row[0];
    dataGridView1.Rows[index].Cells["Parameter"].Value = row[1];

    typeCell = (DataGridViewComboBoxCell)(dataGridView1.Rows[index].Cells["DataTyp"]);
    typeCell.Value = row[2].ToString().Trim();

    dataGridView1.Rows[index].Cells["Enable"].Value = row[3];
}

結果,

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM