Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从不同的数据源向datagradview添加列_C#_Winforms_Datagridview_Datasource - Fatal编程技术网

C# 从不同的数据源向datagradview添加列

C# 从不同的数据源向datagradview添加列,c#,winforms,datagridview,datasource,C#,Winforms,Datagridview,Datasource,我目前正在为我的申请编写一份“高级”搜索表。我正在使用datagridview来显示结果。想法是能够彻底搜索(有很多选择) 目前,我以如下方式填充datagridview: dgvData.AutoGenerateColumns = false; if (cbbKlant.SelectedItem != null) { dgvData.DataSource = StatistiekManagement.getOpdrachten(

我目前正在为我的申请编写一份“高级”搜索表。我正在使用
datagridview
来显示结果。想法是能够彻底搜索(有很多选择)

目前,我以如下方式填充datagridview:

    dgvData.AutoGenerateColumns = false;

        if (cbbKlant.SelectedItem != null)
        {
            dgvData.DataSource = StatistiekManagement.getOpdrachten((klant)cbbKlant.SelectedItem);

            //ID kolom
            DataGridViewTextBoxColumn id = new DataGridViewTextBoxColumn();
            id.Name = "ID";
            id.DataPropertyName = "opdracht_id";

            //Plaatsen kolom
            DataGridViewTextBoxColumn plaatsen = new DataGridViewTextBoxColumn();
            plaatsen.Name = "Plaatsen";
            plaatsen.DataPropertyName = "aantal_personen";

            //Vertrekplaats kolom
            DataGridViewTextBoxColumn vertrek = new DataGridViewTextBoxColumn();
            vertrek.Name = "Vertrek";
            vertrek.DataPropertyName = "locatie_id";

            this.dgvData.Columns.Add(id);
            this.dgvData.Columns.Add(plaatsen);
            this.dgvData.Columns.Add(vertrek);
        }
这里的问题是我想从另一个表向
datagridview
添加信息。例如:我有一份
合同
,而这份合同有一个
位置
。如何在此
datagridview
中显示
位置

我还使用
linqtosql
从数据库中获取数据

谢谢,
Thomas

不能将datagridview绑定到两个不同的源


您的解决方案是编写一条SQL语句连接两个不同的表,然后用它填充数据集。然后,您可以将其用作数据源。

有几种方法可以附加该位置。最简单的方法是将位置作为属性添加到绑定基类中。它不必是数据库中的字段,而只是可以绑定到的属性。如果继承不是一个选项,有时封装可以工作

除上述内容外,您始终可以向(绑定的)datagridview添加非绑定列。它应该显示的值可以来自您喜欢的任何来源。显示该值的方法之一是使用datagridview的cellformatting事件:

        //inside initialization void
        dgvData.CellFormatting+=new DataGridViewCellFormattingEventHandler(dgvData_CellFormatting);
        dvcol = new DataGridViewTextBoxColumn();
        dgvData.Columns.Add(dvcol);
    }

    DataGridViewColumn dvcol;

    void dgvData_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        if (dvcol != null && e.RowIndex != -1 && e.ColumnIndex == dvcol.Index)//where Column1 is your combobox column
        {
            var rec = (YourRecordTypeSuchAsContract)dgvData.Rows[e.RowIndex].DataBoundItem;
            e.Value = ""; //get description based on the rec
        }
    }

如何从联接的LINQ语句返回数据?我编写了以下linq代码,但我不知道如何返回查询:
var query=(从dc.opdrachts中的o开始,其中o.klant==klant在dc.locatie_opdrachts中加入lo在o.opdracht_id等于lo.opdracht_id选择new{o,lo.locatie})我不确定。至少可以说,我的LINQ生锈了。难道你不能对你的SQL连接调用一个SQL连接并使用这个数据集吗?谢谢,我该如何向我的绑定基类添加一个属性呢?我让LINQ创建所有类。扩展自动生成的LINQ类实际上非常容易,因为它们实现了部分声明。如果转到代码隐藏(在designer中的表上单击鼠标右键,然后单击“查看代码”),应该会看到一个可以添加属性的分部类。(只要这些属性没有columnattribute,它们就不会被视为数据库架构的一部分)。一些链接:这里有一个简短的示例:这里有一个较长的教程: