将组合框选定的项目复制到gridview

时间:2013-07-01 17:39:06

标签: c# .net winforms

在Windows窗体中我有一个组合文件的组合框,我只使用此代码在组合框中显示名称

cmbArticleList.DataSource = GetAllArticles();
cmbArticleList.DisplayMember = "Name";

使用onclick按钮我不知道如何将整个对象Article(它的属性(CodePrice,...))复制到gridview或同一表单内的其他控件窗口。

2 个答案:

答案 0 :(得分:1)

此答案显示如何在richtextbox控件中显示文章内容。

  1. 将文章名称或标识符指定给显示成员属性。

  2. 将文章内容分配给值成员属性。

  3. 订阅组合框的SelectedItemChanged事件。

  4. 当SelectedItem发生更改时,将richtextbox的text属性设置为组合框的SelectedValue属性为字符串。

    public void controlInit() {
        DataTable articleInfo = new DataTable();
        articleInfo.Columns.Add(new DataColumn("Name"));
        articleInfo.Columns.Add(new DataColumn("Article"));
        DataRow dataRow1 = articleInfo.NewRow();
        DataRow dataRow2 = articleInfo.NewRow();
        dataRow1["Name"] = "Article 1";
        dataRow1["Article"] = "Article 1 content";
        dataRow2["Name"] = "Article 2";
        dataRow2["Article"] = "Article 2 content";
        articleInfo.Rows.Add(dataRow1);
        articleInfo.Rows.Add(dataRow2);
        this.comboBox1.DataSource = articleInfo;
        this.comboBox1.DisplayMember = "Name";
        this.comboBox1.ValueMember = "Article";
        this.comboBox1.SelectedIndexChanged +=
            new EventHandler(comboBox1_SelectedIndexChanged);
    }
    
    private void comboBox1_SelectedIndexChanged( object sender, EventArgs e ) {
        this.richTextBox1.Text = this.comboBox1.SelectedValue.ToString();
    }
    

答案 1 :(得分:1)

尝试在文章的表单中声明一个全局变量,如:

private List<Article> list;

因此,在您将列表绑定到ComboBox之前,先将其放在全局定义的列表中,然后为ValueMember添加ComboBox,尤其是Primary Key。用于唯一标识值的表格,如:

list = GetAllArticles();
cmbArticleList.DataSource = list; 
cmbArticleList.DisplayMember = "Name";
cmbArticleList.ValueMember = "Id";

因此,当您点击Button时,您可以从列表中获取特定文章并将其放在DataGridView上,例如:

    private void button1_Click(object sender, EventArgs e)
    {

        Article selectedArticle = list.Where(Articleid => Articleid.Id == int.Parse(comboBox1.SelectedValue.ToString())).FirstOrDefault();
        DataGridViewRow row = (DataGridViewRow)dataGridView1.Rows[0].Clone();
        row.Cells[0].Value = selectedArticle.Id;
        row.Cells[1].Value = selectedArticle.Id2;
        row.Cells[2].Value = selectedArticle.Group;
        row.Cells[3].Value = selectedArticle.Code;
        row.Cells[4].Value = selectedArticle.Name;
        row.Cells[5].Value = selectedArticle.Price;
        dataGridView1.Rows.Add(row);
    }

现在,假设您有一个DataGridView,其中包含六(6)列。