C#winform listview的数据放入报表中解决方法
C#winform listview的数据放入报表中
listview的数据 是自己动态生成的
不是数据库里面
想把运行后listview所显示的数据 通过按钮传到报表窗体中 求源代码
------解决思路----------------------
------解决思路----------------------
你的listview数据源有现成的类吗?如果没有先写一个类,这个类你单独写在一个命名空间,然后上面代码的二维数组你用List<单独的命名空间.你的类>来替代。
代码如下:
代码写好后先生成一下
接着,添加一个rdlc文件,里面建一个数据集,比如起名为"abc",接下来有一个关于设置数据源的问题,在新建数据源的时候,你选择“对象”,然后选择你刚刚建的那个Print命名空间,然后可用数据集选PrintClass
大概布局一下rdlc的数据表格,什么列显示什么数据...
接着:
1、实例化一个ReportDataSource类,比如命名xyz,设置他的Name属性为前面起名的"abc",Value就是通过构造函数传来的_printDataSource
2、建一个ReportViewer文件,设置他的ReportPath属性值为你刚才建的rdlc文件的路径,在通过DataSources.Add方法将上面的ReportDataSource的实例xyz加入进去
好了,我说的可能不是太细,具体的节点都提到了,不是特别清楚的话,可以再到网上找点资料看看。
搞定之后别忘记结贴。
listview的数据 是自己动态生成的
不是数据库里面
想把运行后listview所显示的数据 通过按钮传到报表窗体中 求源代码
------解决思路----------------------
//这里举例用一个二维数据,你也可以用List,都可以。
string[,] strArr = new string[listView1.Items.Count, listView1.Columns.Count];
//将listView里面的数据存入string[,]
for (int i = 0; i < listView1.Items.Count; i++)
{
for (int a = 0; a < listView1.Items[i].SubItems.Count; a++)
{
strArr[i,a] = listView1.Items[i].SubItems[a].Text;
}
}
//将上面的二维数组通过报表窗体的构造函数传入:
(new Form1(strArr)).Show();
//修改一下报表窗体的构造函数
public partial class Form1 : Form
{
//声明一个报表窗体私有的二维数组变量_arr
private string[,] _arr;
public Form1(string[,] arr)
{
InitializeComponent();
_arr = arr
}
//下面你可以用_arr的数据来填充报表
//我将_arr的遍历方法写一下
for (int i = 0; i < _arr.GetLength(0); i++)
{
for(int a = 0;a<_arr.GetLength(1);a++)
{
//取值:_arr[i, a];
}
}
}
------解决思路----------------------
你的listview数据源有现成的类吗?如果没有先写一个类,这个类你单独写在一个命名空间,然后上面代码的二维数组你用List<单独的命名空间.你的类>来替代。
代码如下:
namespace Print
{
public class PrintClass
{
public string a{get;set;}
public string b{get;set;}
public string c{get;set;}
}
}
//换成List<T>
List<Print.PrintClass> list = new List<Print.PrintClass>();
//将listView里面的数据存入string[,]
for (int i = 0; i < listView1.Items.Count; i++)
{
Print.PrintClass item = new Print.PrintClass();
item.a = listView1.Items[i].SubItems[0].Text;
item.b = listView1.Items[i].SubItems[1].Text;
item.c = listView1.Items[i].SubItems[2].Text;
list.Add(item);
}
//将上面的二维数组通过报表窗体的构造函数传入:
(new Form1(list)).Show();
//修改一下报表窗体的构造函数
public partial class Form1 : Form
{
//声明一个报表窗体私有的list变量
private List<Print.PrintClass> _printDataSource;
public Form1(List<Print.PrintClass> printDataSource)
{
InitializeComponent();
_printDataSource = printDataSource
}
}
代码写好后先生成一下
接着,添加一个rdlc文件,里面建一个数据集,比如起名为"abc",接下来有一个关于设置数据源的问题,在新建数据源的时候,你选择“对象”,然后选择你刚刚建的那个Print命名空间,然后可用数据集选PrintClass
大概布局一下rdlc的数据表格,什么列显示什么数据...
接着:
1、实例化一个ReportDataSource类,比如命名xyz,设置他的Name属性为前面起名的"abc",Value就是通过构造函数传来的_printDataSource
2、建一个ReportViewer文件,设置他的ReportPath属性值为你刚才建的rdlc文件的路径,在通过DataSources.Add方法将上面的ReportDataSource的实例xyz加入进去
好了,我说的可能不是太细,具体的节点都提到了,不是特别清楚的话,可以再到网上找点资料看看。
搞定之后别忘记结贴。