我们如何从List< Entity>绑定RDLC报告? ? [英] How can we bind RDLC report from List<Entity> ?

查看:101
本文介绍了我们如何从List< Entity>绑定RDLC报告? ?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,



我需要制作一份具有一对多关系概念的RDLC报告。

假设我们有产品和他们的差异。和一个方法GetProdctList()返回产品列表。

现在需要绑定报告。



这是班级:



  public  class产品
{
public INT ProdId {get; set ;}
public string名称{get; set ;}
public 列表< Variance> ProductVariance {get; set ;}
}

public class差异
{
public INT ProdId {get; set ;}
public string颜色{get; set ;};
}





如何实施呢请告诉我你的看法?我试过但在报告设计时我无法从同一个数据集访问variance的成员。



注意:从前端只有可用的产品列表。 />


谢谢,

Padam

解决方案

As我在评论中提到你没有提供足够的信息。然而......



您可以使用 Linq [ ^ ]获取产品清单及其外观。看看例子:



  //  类定义: 
public class 方差
{
private int pid = 0 ;
private string c = string .Empty;

public 方差( int _pid, string _c)
{
pid = _pid;
c = _c;
}

public int ProdId
{
get { return pid;}
set {pid = value ;}
}

public string 颜色
{
get { return c;}
set {c = value ;}
}
}
public class 产品
{
private int pid = 0 < /跨度>;
private string sname = string .Empty;
private 列表< Variance> cvariances = null ;

public 产品( int _pid, string _sname,List< Variance> _cvariances)
{
pid = _pid;
sname = _sname;
cvariances = _cvariances;
}

public int ProdId
{
get { return pid;}
set {pid = value ;}
}

public string 名称
{
get { return sname;}
set {sname = value ;}
}

public 列表< Variance> ProductVariances
{
get { return cvariances;}
set {cvariances = value ;}
}
}
// 主程序:
List< product> products = new 列表< product>()
{
new 产品(< span class =code-digit> 1
GummiBear new 列表< variance>()
{
方差( 1 black),
new 方差( 1 red),
new 方差( 1 white
}),
产品( 2 CellPhone new 列表< variance>()
{
new 方差( 2 blue),
new 方差( 2 gold
})
};

DataTable dt = new DataTable();
DataColumn dc = new DataColumn( ProdId ,Type.GetType( System.Int32));
dt.Columns.Add(dc);
dc = new DataColumn( 名称 ,Type.GetType( System.String));
dt.Columns.Add(dc);
dc = new DataColumn( Color ,Type.GetType( System.String));
dt.Columns.Add(dc);

var result = 来自 v in products.SelectMany(p => p.ProductVariances.Select(pv => pv))
join p 产品中的code-keyword>等于p.ProdId
选择 new object []
{
p.ProdId,
p.Name,
v.Color
};
// fill datatable
foreach var r in result)
{
dt。 Rows.Add(R);
}
// 待办事项:
// 使用datatable作为rdlc报告的数据源





结果:



<前lang =文字> 产品名称颜色
1 GummiBear black
1 GummiBear red
1 GummiBear white
2 CellPhone blue
2 CellPhone gold







注意:类的定义已经改变。



您可以使用 CopyToDataTable扩展方法 [ ^ ]以更简单的方式创建 DataTable 对象。


Hello,

I need to make a RDLC report that has concept like one-many relationship.
Suppose we have Product and their variances. and one method GetProdctList() which returning product list.
Now Need to bind report.

Here is the class :

public class Product
{
    public INT ProdId  {get;set;}
    public string Name {get;set;}
    public List<Variance> ProductVariance {get;set;}
}

public class Variance
{
  public INT ProdId {get;set;}
  public string Color {get;set;};
}



How can I implement it Please let me know your view? I tried but at the time of report design I am unable to access variance's members from the same Dataset.

Note : From front end only List of Products available.

Thanks,
Padam

解决方案

As i mentioned in the comment to the question you did not provide enough information. Nevertheless...

You can use Linq[^] to get the list of products and its varances. Have a look at example:

//class definition:
public class Variance
{
    private int pid = 0;
    private string c = string.Empty;

    public Variance(int _pid, string _c)
    {
        pid = _pid;
        c = _c;
    }

    public int ProdId
    {
        get{return pid;}
        set{pid = value;}
    }

    public string Color
    {
        get{return c;}
        set{c = value;}
    }
}
public class Product
{
    private int pid = 0;
    private string sname = string.Empty;
    private List<Variance> cvariances = null;

    public Product(int _pid, string _sname, List<Variance> _cvariances)
    {
        pid = _pid;
        sname = _sname;
        cvariances = _cvariances;
    }

    public int ProdId
    {
        get{return pid;}
        set{pid = value;}
    }

    public string Name
    {
        get{return sname;}
        set{sname = value;}
    }

    public List<Variance> ProductVariances
    {
        get{return cvariances;}
        set{cvariances = value;}
    }
}
//main program:
	List<product> products  = new List<product>()
	{
		new Product(1, "GummiBear", new List<variance>()
		{
			new Variance(1, "black"),
			new Variance(1, "red"),
			new Variance(1, "white")
		}),
		new Product(2, "CellPhone", new List<variance>()
		{
			new Variance(2, "blue"),
			new Variance(2, "gold")
		})
	};
	
	DataTable dt = new DataTable();
	DataColumn dc = new DataColumn("ProdId", Type.GetType("System.Int32"));
	dt.Columns.Add(dc);
	dc = new DataColumn("Name", Type.GetType("System.String"));
	dt.Columns.Add(dc);
	dc = new DataColumn("Color", Type.GetType("System.String"));
	dt.Columns.Add(dc);
	
	var result = from v in products.SelectMany(p=>p.ProductVariances.Select(pv=>pv))
		join p in products on v.ProdId equals p.ProdId
		select new object[]
			{
				p.ProdId,
				p.Name,
				v.Color
			};
        //fill datatable
	foreach (var r in result)
	{
		dt.Rows.Add(r);
	}
        //TO DO:
        //use datatable as a datasource for rdlc report



Result:

ProdId Name      Color
1      GummiBear black 
1      GummiBear red 
1      GummiBear white 
2      CellPhone blue 
2      CellPhone gold 




Note: the definition of classes has been changed.

You can use CopyToDataTable extension method[^] to create DataTable object in simpler manner.


这篇关于我们如何从List&lt; Entity&gt;绑定RDLC报告? ?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆