簡體   English   中英

從DataGridView BindingSource設置DataGridView ComboBoxColumn selectedIndex

[英]set DataGridView ComboBoxColumn selectedIndex from DataGridView BindingSource

DataGridViewComboBoxColumn有一個數據源,其中包含名稱列表。 DataGridView包含一個單獨的數據源,其中包含上述列表的索引。

無論如何,是否有使用DataGridView中的數據源來設置DataGridViewComboBoxColumn selectedIndex的方法? 舉個例子:

var bs = new BindingSource() {DataSource = objDatabase.GetDataTable("Traverse Table", )}; dgvTraverseTable.DataSource = bs; 對於“穿越傳說”布局,

  • 1 /否

  • 2 /是

  • 3 /否

dgvTraverseTable列:colPathName(comboxboxcol),colPathUse(checkboxcol)

對於colPathName,我有一個BindingSource作為帶有

(“ PathNo1”,“ PathNo2”,“ PathNo3”)

所以理想情況下,應顯示以下內容

  • 路徑編號1 /否

  • PathNo2 /是

  • PathNo3 /否

這是一個完整的工作樣本

using System.ComponentModel;
using System.Windows.Forms;

namespace Datagridview_47080892
{
    public partial class Form1 : Form
    {
        DataGridView dgv = new DataGridView();
        BindingList<BindedItem> dgvlist = new BindingList<BindedItem>();
        BindingList<comboItem> comboList = new BindingList<comboItem>();

        public Form1()
        {
            InitializeComponent();
            InitDGV();
            AddData();
        }

        private void AddData()
        {
            for (int i = 0; i < 5; i++)
            {
                dgvlist.Add(new BindedItem
                {
                    prop1 = $"prop1value{i}",
                    prop2 = $"prop2value{i}",
                    prop3 = $"prop3value{i}",
                    prop4 = $"{i}"
                });
            }

            comboList.Add(new comboItem { showThis = "Make a selection", butTheValueIs = "0" });
            comboList.Add(new comboItem { showThis = "Option 1", butTheValueIs = "1" });
            comboList.Add(new comboItem { showThis = "Option 2", butTheValueIs = "2" });
            comboList.Add(new comboItem { showThis = "Option 3", butTheValueIs = "3" });
            comboList.Add(new comboItem { showThis = "Option 4", butTheValueIs = "4" });
            comboList.Add(new comboItem { showThis = "Option 5", butTheValueIs = "5" });
            comboList.Add(new comboItem { showThis = "Option 6", butTheValueIs = "6" });
            comboList.Add(new comboItem { showThis = "Option 7", butTheValueIs = "7" });
            comboList.Add(new comboItem { showThis = "Option 8", butTheValueIs = "8" });

        }

        private void InitDGV()
        {
            //dgv.Location = new Point(5, 5);
            dgv.Dock = DockStyle.Top;
            this.Controls.Add(dgv);
            dgv.AutoGenerateColumns = false;
            dgv.Columns.Add(new DataGridViewColumn(new DataGridViewTextBoxCell()));
            dgv.Columns.Add(new DataGridViewColumn(new DataGridViewTextBoxCell()));
            dgv.Columns.Add(new DataGridViewColumn(new DataGridViewTextBoxCell()));

            DataGridViewComboBoxColumn cbcol = new DataGridViewComboBoxColumn();
            cbcol.DataSource = comboList;
            cbcol.DisplayMember = "showThis";
            cbcol.ValueMember = "butTheValueIs";
            dgv.Columns.Add(cbcol);

            dgv.Columns[0].DataPropertyName = "prop1";
            dgv.Columns[1].DataPropertyName = "prop2";
            dgv.Columns[2].DataPropertyName = "prop3";
            dgv.Columns[3].DataPropertyName = "prop4";

            dgv.DataSource = dgvlist;
        }
    }


    public class BindedItem
    {
        public string prop1 { get; set; }
        public string prop2 { get; set; }
        public string prop3 { get; set; }
        public string prop4 { get; set; }
    }
    public class comboItem
    {
        public string showThis { get; set; }
        public string butTheValueIs { get; set; }
    }
}

暫無
暫無

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

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