前台代码如下:
<form id="form1" runat="server">
<ext:ResourceManager ID="ResourceManager1" runat="server">
</ext:ResourceManager>
<ext:Hidden ID="hd_StorageId" runat="server" />
<ext:Hidden ID="hd_StorageName" runat="server" />
<ext:Viewport ID="Viewport1" runat="server" Layout="border">
<Items>
<ext:Panel ID="Panel1" runat="server" Height="100" Region="North" Border="false"
LabelWidth="60" Title="搜索条件" Layout="ColumnLayout" ButtonAlign="Center">
<Items>
<ext:ColumnLayout ID="ColumnLayout1" runat="server">
<Columns>
<ext:LayoutColumn ColumnWidth="0.333">
<ext:Panel runat="server" Width="233" Border="false">
<Items>
<ext:HBoxLayout runat="server" Align="Middle" Pack="Center">
<BoxItems>
<ext:BoxItem>
<ext:DropDownField ID="DDLStorage" runat="server" FieldLabel="仓库" Editable="false"
DataIndex="StorageName" Width="230" EmptyText="该项不能为空">
<Component>
<ext:Panel ID="Panel3" runat="server" Height="180" Layout="column" AutoScroll="true"
Frame="true" Width="144">
<Items>
<ext:TreePanel ID="TreePanelOrg1" runat="server" Border="false" Width="230" Height="130"
Cls='cls' AutoScroll="true">
<Listeners>
<DblClick Handler="selectStorage(node) " />
</Listeners>
</ext:TreePanel>
</Items>
<BottomBar>
<ext:StatusBar ID="StatusBar3" runat="server">
<Items>
<ext:Label ID="Label3" Text="双击选择仓库" LabelAlign="Left" LabelStyle="font-size:12px"
Icon="Help" runat="server">
</ext:Label>
</Items>
</ext:StatusBar>
</BottomBar>
</ext:Panel>
</Component>
</ext:DropDownField>
</ext:BoxItem>
</BoxItems>
</ext:HBoxLayout>
</Items>
</ext:Panel>
</ext:LayoutColumn>
<ext:LayoutColumn ColumnWidth="0.333">
<ext:Panel runat="server" Width="233" Border="false">
<Items>
<ext:HBoxLayout runat="server" Align="Middle" Pack="Center">
<BoxItems>
<ext:BoxItem>
<ext:DateField ID="txtStartTime" runat="server" Width="230" FieldLabel="开始日期">
</ext:DateField>
</ext:BoxItem>
</BoxItems>
</ext:HBoxLayout>
</Items>
</ext:Panel>
</ext:LayoutColumn>
<ext:LayoutColumn ColumnWidth="0.333">
<ext:Panel runat="server" Width="233" Border="false">
<Items>
<ext:HBoxLayout runat="server" Align="Middle" Pack="Center">
<BoxItems>
<ext:BoxItem>
<ext:DateField ID="txtEndTime" runat="server" Width="230" FieldLabel="结束日期">
</ext:DateField>
</ext:BoxItem>
</BoxItems>
</ext:HBoxLayout>
</Items>
</ext:Panel>
</ext:LayoutColumn>
</Columns>
</ext:ColumnLayout>
</Items>
<Buttons>
<ext:Button ID="BtnSave" runat="server" Icon="Accept" Text="查询">
<Listeners>
<Click Handler="search();" />
</Listeners>
</ext:Button>
<ext:Button ID="BtnCancel" runat="server" Icon="Cancel" Text="重置">
<Listeners>
<Click Handler="resetSearch();" />
</Listeners>
</ext:Button>
</Buttons>
</ext:Panel>
<ext:Panel ID="Panel2" runat="server" Region="Center" Border="false" Title="结果"
AutoHeight="true" >
<Content>
<div style="width: 100%; height: 100%;">
<rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" Font-Size="8pt"
Width="100%" Height="100%" InteractiveDeviceInfos="(集合)" WaitMessageFont-Names="Verdana"
WaitMessageFont-Size="14pt" AsyncRendering="true">
<LocalReport ReportPath="OutInReport.rdlc">
</LocalReport>
</rsweb:ReportViewer>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
</div>
</Content>
</ext:Panel>
</Items>
</ext:Viewport>
</form>
ReportViewer1的刷新是用的Ext的ajax的方式
function search() {
if (hd_StorageId.getValue() && txtStartTime.getValue() && txtEndTime.getValue()) {
Ext.net.DirectMethods.searchReport(hd_StorageId.getValue(), txtStartTime.getValue(), txtEndTime.getValue(), {
success: function (result) {
resetSearch();
}
// failure: function (errorMsg) {
// Ext.net.Notification.show({
// iconCls: 'icon-information',
// pinEvent: 'click',
// html: errorMsg,
// title: '提示'
// });
// }
});
} else {
Ext.net.Notification.show({
iconCls: 'icon-information',
pinEvent: 'click',
html: '请同时选择仓库、起始时间、结束时间',
title: '提示'
});
}
}
Ext.netrdlc
<form id="form1" runat="server">
<ext:ResourceManager ID="ResourceManager1" runat="server">
</ext:ResourceManager>
<ext:Hidden ID="hd_StorageId" runat="server" />
<ext:Hidden ID="hd_StorageName" runat="server" />
<ext:Viewport ID="Viewport1" runat="server" Layout="border">
<Items>
<ext:Panel ID="Panel1" runat="server" Height="100" Region="North" Border="false"
LabelWidth="60" Title="搜索条件" Layout="ColumnLayout" ButtonAlign="Center">
<Items>
<ext:ColumnLayout ID="ColumnLayout1" runat="server">
<Columns>
<ext:LayoutColumn ColumnWidth="0.333">
<ext:Panel runat="server" Width="233" Border="false">
<Items>
<ext:HBoxLayout runat="server" Align="Middle" Pack="Center">
<BoxItems>
<ext:BoxItem>
<ext:DropDownField ID="DDLStorage" runat="server" FieldLabel="仓库" Editable="false"
DataIndex="StorageName" Width="230" EmptyText="该项不能为空">
<Component>
<ext:Panel ID="Panel3" runat="server" Height="180" Layout="column" AutoScroll="true"
Frame="true" Width="144">
<Items>
<ext:TreePanel ID="TreePanelOrg1" runat="server" Border="false" Width="230" Height="130"
Cls='cls' AutoScroll="true">
<Listeners>
<DblClick Handler="selectStorage(node) " />
</Listeners>
</ext:TreePanel>
</Items>
<BottomBar>
<ext:StatusBar ID="StatusBar3" runat="server">
<Items>
<ext:Label ID="Label3" Text="双击选择仓库" LabelAlign="Left" LabelStyle="font-size:12px"
Icon="Help" runat="server">
</ext:Label>
</Items>
</ext:StatusBar>
</BottomBar>
</ext:Panel>
</Component>
</ext:DropDownField>
</ext:BoxItem>
</BoxItems>
</ext:HBoxLayout>
</Items>
</ext:Panel>
</ext:LayoutColumn>
<ext:LayoutColumn ColumnWidth="0.333">
<ext:Panel runat="server" Width="233" Border="false">
<Items>
<ext:HBoxLayout runat="server" Align="Middle" Pack="Center">
<BoxItems>
<ext:BoxItem>
<ext:DateField ID="txtStartTime" runat="server" Width="230" FieldLabel="开始日期">
</ext:DateField>
</ext:BoxItem>
</BoxItems>
</ext:HBoxLayout>
</Items>
</ext:Panel>
</ext:LayoutColumn>
<ext:LayoutColumn ColumnWidth="0.333">
<ext:Panel runat="server" Width="233" Border="false">
<Items>
<ext:HBoxLayout runat="server" Align="Middle" Pack="Center">
<BoxItems>
<ext:BoxItem>
<ext:DateField ID="txtEndTime" runat="server" Width="230" FieldLabel="结束日期">
</ext:DateField>
</ext:BoxItem>
</BoxItems>
</ext:HBoxLayout>
</Items>
</ext:Panel>
</ext:LayoutColumn>
</Columns>
</ext:ColumnLayout>
</Items>
<Buttons>
<ext:Button ID="BtnSave" runat="server" Icon="Accept" Text="查询">
<Listeners>
<Click Handler="search();" />
</Listeners>
</ext:Button>
<ext:Button ID="BtnCancel" runat="server" Icon="Cancel" Text="重置">
<Listeners>
<Click Handler="resetSearch();" />
</Listeners>
</ext:Button>
</Buttons>
</ext:Panel>
<ext:Panel ID="Panel2" runat="server" Region="Center" Border="false" Title="结果"
AutoHeight="true" >
<Content>
<div style="width: 100%; height: 100%;">
<rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" Font-Size="8pt"
Width="100%" Height="100%" InteractiveDeviceInfos="(集合)" WaitMessageFont-Names="Verdana"
WaitMessageFont-Size="14pt" AsyncRendering="true">
<LocalReport ReportPath="OutInReport.rdlc">
</LocalReport>
</rsweb:ReportViewer>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
</div>
</Content>
</ext:Panel>
</Items>
</ext:Viewport>
</form>
ReportViewer1的刷新是用的Ext的ajax的方式
function search() {
if (hd_StorageId.getValue() && txtStartTime.getValue() && txtEndTime.getValue()) {
Ext.net.DirectMethods.searchReport(hd_StorageId.getValue(), txtStartTime.getValue(), txtEndTime.getValue(), {
success: function (result) {
resetSearch();
}
// failure: function (errorMsg) {
// Ext.net.Notification.show({
// iconCls: 'icon-information',
// pinEvent: 'click',
// html: errorMsg,
// title: '提示'
// });
// }
});
} else {
Ext.net.Notification.show({
iconCls: 'icon-information',
pinEvent: 'click',
html: '请同时选择仓库、起始时间、结束时间',
title: '提示'
});
}
}
Ext.netrdlc
[DirectMethod]
public void searchReport(int storageId, DateTime starttime, DateTime endtime)
{
#region 公共数据
DataTable commonTable = toCommonData(); #endregion
//所有的现存产品库存记录
IList list = ManagerFactory.productReserveSrv.AllProductReserveRec(storageId);
DataTable listDT = toProdReseDT(list);
//从当前时间到查询终止时间段内 包括当前时间,不包括查询终止时间
IList listSec = ManagerFactory.productReserveSrv.OutInRec(storageId, endtime.AddDays(1), DateTime.Now);
DataTable listSecDT = toOutInRecDetailDT(listSec);
//查询时间段内的出入库情况,包括两头时间点
IList listFir = ManagerFactory.productReserveSrv.OutInRec(storageId, starttime, endtime);
DataTable listFirDT = toOutInRecDetailDT(listFir); foreach (DataRow dr in listDT.Rows)
{
//从当前时间到查询终止时间段内
foreach (DataRow drSec in listSecDT.Rows)
{
if (dr["ProductCode"].ToString() == drSec["ProductCode"].ToString() && dr["ProductBatch"].ToString() == drSec["ProductBatch"].ToString())//产品编号、批次相同
{
//objSec 4:卖 5:入
dr["EndQuantity"] = Convert.ToDecimal(dr["EndQuantity"]) + Convert.ToDecimal(drSec["RealQuantity"]) - Convert.ToDecimal(drSec["StorQuantity"]);
}
}
//时间段内的出入库情况
foreach (DataRow drFir in listFirDT.Rows)
{
if (dr["ProductCode"].ToString() == drFir["ProductCode"].ToString() && dr["ProductBatch"].ToString() == drFir["ProductBatch"].ToString())//产品编号、批次相同
{
dr["RealQuantity"] = drFir["RealQuantity"];
dr["StorQuantity"] = drFir["StorQuantity"];
//objSec 4:卖 5:入
dr["StartQuantity"] = Convert.ToDecimal(dr["EndQuantity"]) + Convert.ToDecimal(drFir["RealQuantity"]) - Convert.ToDecimal(drFir["StorQuantity"]);
}
}
} this.ReportViewer1.Reset();
this.ReportViewer1.ProcessingMode = ProcessingMode.Local;
string strPath = Server.MapPath("~/") + "/View/Msec/StorageStockReport/OutInReport.rdlc";
this.ReportViewer1.LocalReport.ReportPath = strPath; //设置导出文件名
this.ReportViewer1.LocalReport.DisplayName = "出入库报表"; this.ReportViewer1.LocalReport.DataSources.Clear();
this.ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", listDT));
this.ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet2", commonTable));
this.ReportViewer1.LocalReport.Refresh();
}
其中的listDT,commonTable都是有数据的,但是就是前台ReportViewer1的并没有刷新.而且奇怪的是,我把searchReport()放在page_load里面执行,便可以显示出数据。
我想,原因是不是这个:我ajax方式取到数据,也重新绑定了数据,但是页面并没有回发,所以造成ReportViewer1没有显示出数据。如果是这个原因的话,各位有什么号办法能解决一下?
对这个东西就敬而远之了
虽然他看起来很厉害