??xml version="1.0" encoding="utf-8" standalone="yes"?> Element Description
比如原来是 ?case ReportStringId.Msg_FileNotFound:
return "File not found.";
我们修改成:
case ReportStringId.Msg_FileNotFound:
return "文g没有扑ֈ";
全部译完毕后,赋?br />DevExpress.XtraReports.Localization.ReportLocalizer.Active = new ChnReportLocalizer();
再次q行XtraReports的DesignerQ发现只有第一个Pointer被正的译了,下面的CheckBox、RichText{等都还是英文。查扑֎因发现工L的控件是动态生成的Q在XtraReports.UserDesigner.Native.AsmHelper中的函数GetToolboxItems负责往工具内d控g。控件显C的名称是ToolboxItem的DisplayName?br />
OKQ搞清楚之后开始动手修改,
1. 在XtraReports.Localization.ReportStringIdq个枚D中添加控件对应的枚DQ比如:Subreport对应d枚DgؓUD_SubreportCaptionQCheckBoxd的枚丑րgؓUD_CheckBoxCaptionQ控件名与枚丑ր的名称需要有对应关系Q因为需要用Enum.ParseҎ(gu)控g的名U映枚丑ր{?br />2. 在ChnReportLocalizer中添加对应的译Qcase ReportStringID.UD_SubreportCaption : return "子报?; {等?br />3. 在AsmHelper中修改原代码Q新生成的ToolboxItem不再直接d到ArrayList中,先进行DisplayName的本地化。先Ҏ(gu)DisplayName使用Enum.Parse获得枚D|然后调用ReportLocalizer.GetString获得本地化的字符串赋值给ToolboxItem.DisplayName?br />
]]>
下图是一个标准的报表设计?
q个Form里包含了不同的元? 报表在XRDesignPanel对象中被~辑, 其他工具栏和停靠面板由XRDesignBarManager和XRDesignDockManager控制. 所有的q些控g都可以通过设计Form的XRDesignFormExBase.DesignPanel, XRDesignFormEx.DesignBarManager和XRDesignFormEx.DesignDockManager属性来操作.
下面列D了设计器中用的元g接口.Design Panel q是报表设计器的主要元g. 它展CZ一个面板用于创Z个新的报表或者编辑原有的报表. 它显C报表带q控制报表带中控件的归属, q可以移? ~放, 复制, _脓(chung)q些控g, 另外q可以在控g上绑定数? 或者进行其他的操作. 而且可以预览报表效果. Main Menu 展示报表设计器的主菜? 包含了一pd的项目和子项? 用于为用h供相x? 通常, 它复制所有的ToolBar按钮, 格式化按钮以及布局按钮. Main Toolbar 展示报表设计器的ToolBar. 包含创徏报表, 保存装蝲报表布局, 剪裁,复制,_脓(chung){按? 以及撤销, 重做{操? Formatting Toolbar 展示报表设计器的格式化Toolbar. 包含一些缺省的操作文本的按? Layout Toolbar 展示报表设计器的布局Toolbar. 包含~放, Ud一l控件位|的按钮. Status Bar 在报表设计器底部展示StatusBar. 通常用于昄报表~辑操作q程中的Ҏ(gu)信息. Toolbox 展示报表设计器的控g工具? 包含所有报表控? 可以拖放新的控g到报表区? 可以d自定义控件到工具׃. Report Explorer 展示报表设计器的Explorer. 它显CZ报表树状l构, 使用它可以很方便地浏览整个报? Field List 展示了报表设计器的树状字D列? 昄了数据源的树状结? 用于数据绑定到报表. Property Grid 展示报表设计器的属性容? 可以修改报表元g的属?
ȀzL表设计器: 管报表设计器是XRDesignFromEx的实? 但一般不需要手工创建此对象. 通常使用以下代码:
XtraReport1 report = new XtraReport1();
// Invoke the End-User Designer and load the report into it.
report.ShowDesigner();
// Invoke the End-User Designer and load the report into it, modally.
report.ShowDesignerDialog();
]]>
XtraReports中的所有报表对象都通过在Bands中的控g来表? 在设计时, 报表控g可以从工Ld到报表中, 只有点击工具׃需要的控g, 然后攑ֈ报表带中卛_. 另一U方式是使用字段列DH口d控g, q种情况? 控g和数据字段l定.
如果要在q行时添加报表控? 你只需要简单地创徏一个相应类型的变量, q过XRControlCollection.AddҎ(gu)d到报表带中即?/p>
所有的报表控g包括bands都是l承自XRControl. 其中部分控g可以q作为容? q种情况下控仉合可以通过XRControl.Controls来获? 如果要获取控件的容器, 可用XRControl.Parent属?
下面列D了XtraReports中的标准报表控g.
Class | Description |
---|---|
![]() |
用于在报表中d子报? 被添加的报表需要被包含在项目中, q设|SubReport的ReportSource属? 子报表可用于合ƈ报表和创Z从表. |
![]() |
用于dWindows Forms或者第三方的控? 此对实际上是d的控件的装, q提供对DrawingҎ(gu)的支?br /> |
![]() |
用于在报表中昄条Ş? 使用XRBarCode.Symbology和XRBarCode.SymbologyId来设|条形码的类?br /> |
![]() |
在报表中昄囑Ş, 使用此控件来Ҏ(gu)一个或多个SeriesViewTypes来展CZ同的数据. |
![]() |
用于在报表中展示复选框. |
![]() |
标签. 可以是单行的, 也可以是多行? |
![]() |
U条. 使用q个控g来画U? |
![]() |
换页. 如果是Band中需要换? 那么使用控g的Band.PageBreak属性比较好. |
![]() |
昄报表面的附加信? 可以昄늠, 日期或者其他信? |
![]() |
用于包含其他控g的控? 可以使用此控件来q行控g的分l? |
![]() |
在报表中昄一个图?br /> |
![]() |
昄一个控? 用于昄,输入,修改格式化的文本. 可以用XRRichText.LoadFile从文件中加蝲文本. |
![]() |
表格 |
![]() |
表格单元. 与XRControl.Textl定 |
![]() |
表格中的? 通过不需要用到此控g, 直接操作表格单元更普? |
![]() |
邮政~码 |
在把报表d到应用之? ~省的样子如下图所C? 可以看到, 报表被初始化分ؓ3个基本的?头, 明细, 和页?, q些带中可以d不同的报表控?
每一U带指明了控件在报表中是怎样定位和被打印? 即确定了打印的顺序和ơ数. 注意, 有些<band strips>包含了带是如何被打印的信? 比如: PageHeader和PageFooterp明了是每一都有这一带的.
在创建报表时, 可以d或者删除Q意的? 在XtraReports中有很多不同cd的带, 每一个都?lt;Band>的子c? 列D如下:
Bandsc?/th> | 描述 |
---|---|
TopMarginBand | 用于攄出现在报表每页头最上面的控? |
ReportHeaderBand | 用于攄出现在报表开头的控g |
PageHeaderBand | 用于攄出现在报表页上面, 仅次于TopMarginBand位置的控? 主要是用于放|需要分늚表格的头, |
GroupHeaderBand | 用于攄明细带中分组记录的头部控? |
DetailBand | 用于昄l定数据的每条记?br /> |
DetailReportBand | 用于创徏M报表. M关系׃报表的XtraReportsBase.DataMember属性指? |
GroupFooterBand | 用于攄明细带中分组记录下方的控?br /> |
PageFooterBand | 用于攄报表下方的控g |
ReportFooterBand | 用于攄报表l束的控? |
BottomMarginBand | 用于攄报表每页最下方的控? |
|
下图昄了不同类型的带的相对位置:
TopMarginBand and BottomMarginBand
ReportHeaderBand and ReportFooterBand
PageHeaderBand and PageFooterBand
GroupHeaderBand and GroupFooterBand
DetailBand
报表的预览显C的不是带本w? 而是<PrintingSystem>的输? PageHeaderBand, PageFooterBand, TopMarginBand和BottomMarginBand在报表预览的每一都有输? ReportHeaderBand和ReportFooterBandcd昄一? GroupHeaderBand和GroupFooterBand出现在每个记录组?
举个单的例子来说明开发过E:
一个应用中有两个页面PublicPage.aspx是向公众开攄QPrivatePage.aspx只允许登录用h能访问?BR>W?个页面是d面Q要求输入用户名和密码?BR>步骤如下Q?BR>1、把PublicPage.aspx, login.aspx, web.config拯C个IIS的虚拟目录下?BR>2、创Z个子目录SecretQ将PrivatePage.aspx, web.config拯到子目录中?BR>3、在web.config中添加以下代? 实现讉K保存面自动跌{d面的功?BR><authentication mode="Forms">
<forms loginUrl="LoginPage.aspx">
....
</forms>
</authentication>
4、另外有一?lt;credentials>节列出合法用户和密?BR><credentials passwordFormat="Clear">
<user name="Jeff" password="imbatman" />
<user name="John" password="redrover" />
<user name="Bob" password="mxyzptlk" />
<user name="Alice" password="nomalice" />
<user name="Mary" password="contrary" />
</credentials>
此例子中x了的加密选项Q缺省是开的?BR>
5、在Secret子目录的web.config中添加以下代码,实现保护功能?BR> <authorization>
<deny users="?" />
</authorization>
q是用于通知权限理模块System.Web.Security.UrlAuthorizationModuleL未登录用L讉K??"代表匿名用户Q也可以说是未登录用戗?BR>实际的权限验证是由Login.aspx完成的。下列语?BR> if(FormsAuthentication.Authenticate(UserName.Text,Password.Text))
把用户名和密码传lSystem.Web.Security.FormsAuthenticationQ如果验证成功,q回True。ƈ且执行页面蟩转语?BR>FormsAuthentication.RedirectFromLoginPage(UserName.Text,false);
6、真实环境的表单认证比上面的例子要复杂的多,真实应用不大可能把用户和密码保存在文本文件中Q比较常见的是存攑֜数据库中?BR>假定用户表Users?个字DUserName, password, Role.
对于q种情况Q我们需要在刚才的基上进?个地方的修改QLogin.aspx、web.config(根目录下?
在web.config中不再需?lt;credentials>节了?BR>login.aspx也不再?FormsAuthentication.Authenticate 来验证密码,而用CustomAuthenticate替代?BR>在这个方法中使用Sql查询语句来判断用h否合法?/P>