如何在GridView上使用不同的数据源列?

use*_*789 10 c# asp.net gridview datasource databound

我正在尝试动态创建GridView.其中一列是创建行的用户.

JobDebrief jd = new JobDebrief(JobID);
Job jb = new Job(JobID);
DataGrid db = JobClass.Job_Piece.BuildGrid();
db.Columns.Add(CreateBoundColumn(jd.DbriefedByUser, "User"));
PlaceHolder.Controls.Add(db);
db.DataSource = jb.Pieces;
db.DataBind();
Run Code Online (Sandbox Code Playgroud)

我在job_piece类中的BuildGrid函数中创建了GridView.

    public static DataGrid BuildGrid()
    {
          DataGrid NewDg = new DataGrid();

          NewDg.DataKeyField = "ID";
          NewDg.AutoGenerateColumns = false;
          NewDg.CssClass = "tblResults";
          NewDg.HeaderStyle.CssClass = "tblResultsHeader";
          NewDg.AlternatingItemStyle.CssClass = "ResultsStyleAlt";
          NewDg.ItemStyle.CssClass = "ResultsStyle";

          NewDg.Columns.Add(Load.CreateBoundColumn("AdvisedQty", "Qty Advised"));
          NewDg.Columns.Add(Load.CreateBoundColumn("PieceTypeString", "Piece Type"));
          NewDg.Columns.Add(Load.CreateBoundColumn("ReceivedQty", "Rcvd Qty"));          

          NewDg.Width = Unit.Percentage(100.00);

          return NewDg;
    }

public static BoundColumn CreateBoundColumn(string DataField, string Header,string CssClass ="",bool Highlight = false)
    {
        BoundColumn column = new BoundColumn();
        column.DataField = DataField;
        column.HeaderText = Header;
        column.SortExpression = DataField;

        if (Highlight)
        {
            column.ItemStyle.CssClass = "ColumnHighlight";
        }

        if (!string.IsNullOrEmpty(CssClass))
        {
            column.ItemStyle.CssClass = CssClass;
        }
        return column;
    }
Run Code Online (Sandbox Code Playgroud)

它当前显示的3列全部来自job_piece.由于用户不属于此类,因此我尝试在此函数之外创建列.

该列显示标题但行为空白.用户名来自JobDebrief班级.但是因为我将GridView绑定到各个部分,所以db.DataSource = jb.Pieces;它没有找到信息.是否可以将用户列设置为其他DataSource?

Roh*_*ani 0

如果您有列表(可枚举),您可以使用基于连接的方案。如果一对一则加入,否则组加入。

这将生成单个数据源列表,并且很容易从数据库服务器绑定或检索数据,然后也可以在数据库服务器上使用联接。

从技术上讲,我不认为我们可以将多个数据源绑定到简单的网格(树视图和父子视图除外)。网格以行格式显示数据,因此要生成集合中的单个对象或实体所需的单行。如果您提供两个数据源,两者之间必须存在关系。例如:- 第一个有 10 行,第二个有 20 行,那么网格应该显示多少行?因此,对于这一切,需要使用关系并创建单一视图。可以在网格中显示。