再次请教:如何把页面参数作为参数传入到报表条件中

rt999xiaodi 2009-11-01 11:18:23
如题,就是说一个用户登录系统,他的用户名等信息如何传入报表(这个不是报表参数查询条件),就是相当于在构造数据集时为默认当前用户的信息(获取本人的信息作为条件传入)。即谁登陆就展示谁的信息,
...全文
194 17 打赏 收藏 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
rt999xiaodi 2009-11-03
  • 打赏
  • 举报
回复
谢谢上面的回帖。我用的客户端的报表
rt999xiaodi 2009-11-03
  • 打赏
  • 举报
回复

阿泰果然厉害
阿泰 2009-11-02
  • 打赏
  • 举报
回复
他虽然没有说,但是根据
http://topic.csdn.net/u/20091029/20/f6a637cb-d326-4a0a-9de0-bbf769728ce9.html
我判断他用的是RDLC,呵呵
雷肿么了 2009-11-02
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 babyt 的回复:]
楼上的是水晶报表的。。呵呵
[/Quote]

弱弱的问句,,他的这个不是水表? 
阿泰 2009-11-02
  • 打赏
  • 举报
回复
楼上的是水晶报表的。。呵呵
雷肿么了 2009-11-02
  • 打赏
  • 举报
回复
LZ 试下这方法..

 在报表中拖一个文本,,命名为: Txt_user

可以先建一个类用来控制显示报表中文本的显示,
    /// <summary>
/// 设置报表内Text的值
/// </summary>
/// <param name="rptdoc"></param>
/// <param name="controlid"></param>
/// <param name="value"></param>
public static void SetRptText(ReportDocument rptdoc, string controlid, string value)
{
try
{
TextObject rptvalue = (TextObject)rptdoc.ReportDefinition.ReportObjects[controlid];
rptvalue.Text = value;
}
catch
{
throw;
}
}

  后台代码,
   string name=获取用户名;
   if(!string.IsNullOrEmpty(name))Common.SetRptText(Rodc, "Txt_user", "制表人:" + name);
 
 Rodc为 ReportDocument
 
冰糖_adam 2009-11-02
  • 打赏
  • 举报
回复
报到一下
xiao_fan85 2009-11-02
  • 打赏
  • 举报
回复
只知道水表,嘿嘿,顶一顶
雷肿么了 2009-11-02
  • 打赏
  • 举报
回复
...

我打酱油去了..
阿泰 2009-11-01
  • 打赏
  • 举报
回复
对于报表来说,他不知道你的用户名是什么。
所以需要在报表中做一个参数,用这个参数接收你的用户名。

这个你在代码中传过去就行了.

比如:新建一个报表参数叫 username,string型。
在报表模板上,点中表格,然后在左上角上点右键,选属性,进入到“筛选器标签”
新增一个筛选器

某字段 = Parameters!username.Value

然后代码中


this.ReportViewer1.LocalReport.ReportEmbeddedResource = "Report1.rdlc";
ReportParameter rp1 = new ReportParameter("username", "John");
this.ReportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp1 });


把参数传进去,报表中会自动进行过滤
rt999xiaodi 2009-11-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 babyt 的回复:]
一是可以在传递给报表前把数据过滤
二是可以在报表中使用filter过滤,把用户名当作参数传递进来。


实质上都还是作为“报表参数查询条件”实现的。

[/Quote]
你说的第二种方案关键是怎么获取这个用户名参数。
他要求是不同的人登陆显示不同的信息,
阿泰 2009-11-01
  • 打赏
  • 举报
回复

一是可以在传递给报表前把数据过滤
二是可以在报表中使用filter过滤,把用户名当作参数传递进来。


实质上都还是作为“报表参数查询条件”实现的。
波导终结者 2009-11-01
  • 打赏
  • 举报
回复
那应该传参到数据库查询中才对
select 信息 from 表 where name=登陆名
冰糖_adam 2009-11-01
  • 打赏
  • 举报
回复
关注
yanm7788 2009-11-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 babyt 的回复:]
这个有啥不方便的,呵呵。
再说不用这种方法你的用户名也传不进去吧。
[/Quote]
嗯 ...
阿泰 2009-11-01
  • 打赏
  • 举报
回复
这个有啥不方便的,呵呵。
再说不用这种方法你的用户名也传不进去吧。
rt999xiaodi 2009-11-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 babyt 的回复:]
对于报表来说,他不知道你的用户名是什么。
所以需要在报表中做一个参数,用这个参数接收你的用户名。

这个你在代码中传过去就行了.

比如:新建一个报表参数叫 username,string型。
在报表模板上,点中表格,然后在左上角上点右键,选属性,进入到“筛选器标签”
新增一个筛选器

某字段 = Parameters!username.Value

然后代码中

C# codethis.ReportViewer1.LocalReport.ReportEmbeddedResource="Report1.rdlc";
ReportParameter rp1=new ReportParameter("username","John");this.ReportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp1 });

把参数传进去,报表中会自动进行过滤
[/Quote]
谢谢!
但是在客户端报表中这种方式的传参是不是很不方便

4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧