c#能不能直接将数据写进xsd里创建的datatabel?比如讲listviwe里的数据写进去,然后再将xsd里创建的datatabel上的数据绑定到水晶报表?感觉这是个有点难得问题,因为这个没有适配器,绑定的时候查询语句根本没法写!
只要DataTable的结构你是知道的,不管从哪儿来的数据(SQL SERVER\XML文件\内存数据)都能放进去。
Dataset/Datatable/Datarow是和数据库无关的。
现在已经把数据传进去了。那要怎样使用xsd文件里的datatabel?我到这一步卡主了,不知道怎么绑定水晶报表了,能不能教一下我?
@起个名字真非常艰难:
水晶报表我不清楚。
不过一般只要是支持数据绑定的组件,都可以这样写
CrystralReport1.DataSource=yourDataTable
或者
CrystralReport1.printingcontroller.DataSource=yourDataset.tables("YourTable")
前面这部分你自己查一下水晶报表哪个对象用来绑定数据的,通常都会有一个DataSource属性的。
@爱编程的大叔:
CrystralReport1.DataSource=yourDataTable用这个方法会报错提示yourDataTable这是一个类型而已,不能绑定的,其实就有点像绑定datagridview一样,这个是怎么绑定的?
@起个名字真非常艰难: 谢谢你能为我解答,我的意思是这样的哦,首先我在xsd创建了一个datatabel,然后把listviwe上的值传给这个datatabel,我现在已经做到这一步了,差数据绑定这一步了,就是说用这个datatabel绑定数据到datagridview!!!我现在只差这个绑定,能不能教一下我?我需要知道datagridview的绑定,如果知道以上的绑定方法,那么水晶报表的绑定也可以自己推了
@起个名字真非常艰难: 你这基础太差,建议有空找本书看看。
你怎么把值传给datatable的。
上代码吧,你怎么给datatable赋值的。
@爱编程的大叔:谢谢你,谢谢你,谢谢你, 嗯嗯嗯,我有点笨,以后会努力的。以下就是我给datatabel传值的方法:
DataSet1.rukuDataTable ruku = new DataSet1.rukuDataTable();
DataRow dr = ruku.NewRow();
dr["riqi"]=Convert.ToDateTime(riqi);
dr["leibie"] = leibie;
dr["fenlei"] = fenlei;
dr["mingcheng"]=mingcheng;
dr["guige"]=guige;
dr["shuliang"]=shuliang;
dr["danwei"]=danwei;
dr["danjia"]=Convert.ToDouble(danjia);
dr["shuilv"]=Convert.ToDouble(shuilv);
dr["jine"]=Convert.ToDouble(jine);
dr["shuihoudanjia"]=Convert.ToDouble(shuihoudanjia);
dr["shuihoujine"]=Convert.ToDouble(shuihoujine);
dr["songhuodanwei"]=songhuodanwei;
dr["fapiaohao"] = fapiao;
dr["beizhu"] = beizhu;
ruku.Rows.Add(dr);
ruku.AcceptChanges();
@起个名字真非常艰难:
CrystralReport1.DataSource=ruku
@爱编程的大叔: 我想问一下.DataSource是不是要引用的?具体怎么引用?它现在报错说没有找到.DataSource的定义。
@爱编程的大叔:以下是我已经用到的引用了
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports.Engine;
using Microsoft.Reporting.WinForms;
using sinoma_lk;
@起个名字真非常艰难: 我说了我不清楚CrystralReport的Datasource这个属性在哪个组件上面,你得自己找。
我的代码只是个意思。
通常这种组件都有附带Sample的,你看看Sample吧。
@爱编程的大叔: 谢谢你的帮助,水晶报表那一块我搞好了,现在又有新的问题出现了,强类型的datatabel能不能直接给他添加新行的数据啊??我刚才调试了一下,好像不行的,有没有方法解决一下?
//DataSet1.rukuDataTable这一个是在xsd文件里创建的datatabel,能不能直接给他添加新行并赋值?DataSet1.rukuDataTable ruku = new DataSet1.rukuDataTable();
DataRow dr = ruku.NewRow();
dr["riqi"]=Convert.ToDateTime(riqi);
dr["leibie"] = leibie;
dr["fenlei"] = fenlei;
dr["mingcheng"]=mingcheng;
dr["guige"]=guige;
dr["shuliang"]=shuliang;
dr["danwei"]=danwei;
dr["danjia"]=Convert.ToDouble(danjia);
dr["shuilv"]=Convert.ToDouble(shuilv);
dr["jine"]=Convert.ToDouble(jine);
dr["shuihoudanjia"]=Convert.ToDouble(shuihoudanjia);
dr["shuihoujine"]=Convert.ToDouble(shuihoujine);
dr["songhuodanwei"]=songhuodanwei;
dr["fapiaohao"] = fapiao;
dr["beizhu"] = beizhu;
ruku.Rows.Add(dr);
ruku.AcceptChanges();
@起个名字真非常艰难: Datatable不保存到数据库之前基本相当于一个DataRow列表对象,
所以肯定可以自己新增行的。
你自己Google一下就有相关的信息了。
How to: Add Rows to a DataTable
我已经好多年不用DataTable了,现在一般用Ilist<Model>或者IQueryable<Model>。
@爱编程的大叔: 我也不想用datatabel,但是水晶报表它只认这东西。。。。心塞啊!!完全都不熟,一开始不知道怎么赋值,和怎用调用里面的数据。。。。。。现在主要是怎样用xsd文件里的datatable.......不会用啊,难道要自己写一个datatable??哎。。。好心塞
@起个名字真非常艰难:我给你的链接你没有看看?
自己写一个Datatable也是分分钟的事啊
DataTable myDatatabe;
DataColumn myColumn;
mycolumn.ColumnName="Field1"
....
你还是花点时间看看资料吧,要不然很难...
@爱编程的大叔: 谢谢你,看了你给的资料,因为水晶报表一定要有字段,而字段是由xsd文件里的datatable提供的。我想到了一个方法,我首先在xsd文件里创建一个datatable,然后再写一个datateble1用dt.clone()的方法,把强类型的datatable的架构复制到datatable1,我再赋值给datatable1,那样只要他们的列值相等,我再用datatable1 绑定水晶报表,应该可以吧,因为水晶报表只认架构上的列,不认是哪个架构上的,应该可以吧?
@爱编程的大叔:
他现在是在报这样的错误,所以帮定不了
@爱编程的大叔:
他现在是在报这样的错误,所以帮定不了