自从上次发博以来已好长时间了,在这期间也认识了好多使用Ext.NET(extjs)的朋友,很多收获,今年大半时间在外,久违。
本文内容亦未详细整理,歉意,代码就是最好的内容。
这次直接来个以前项目中的实际页面给大家,相对此页面涉及的是Ext.NET日常用的最多的那些方面,还算是较为完整。
本文主要涉及有:
GridPanel相关各方面、Store、Window、FromPanel、ComboBox、RemoteValidation(后台验证)、Listeners、DirectEvents…
运行环境
.NET3.5Sp1、Ext.NET1.0
先看前端Default.aspx代码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="ContractManager_Default" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>合同管理</title>
<script language="javascript" type="text/javascript" src="Default.js"></script>
<style type="text/css">
.x-grid3-cell-inner
{
font-family: "segoe ui" ,tahoma, arial, sans-serif;
}
.x-grid-group-hd div
{
font-family: "segoe ui" ,tahoma, arial, sans-serif;
}
.x-grid3-hd-inner
{
font-family: "segoe ui" ,tahoma, arial, sans-serif;
}
.x-grid3-body .x-grid3-td-Cost
{
background-color: #f1f2f4;
}
.x-grid3-summary-row .x-grid3-td-Cost
{
background-color: #e1e2e4;
}
</style>
</head>
<body>
<form runat="server">
<ext:ResourceManager ID="ResourceManager1" runat="server" ScriptMode="Debug" />
<ext:Hidden runat="server" ID="hdnOldContractNo" />
<ext:Hidden runat="server" ID="hdnOldId" />
<ext:Store runat="server" AutoLoad="true" ID="storeMain" OnRefreshData="storeMainRefreshData"
GroupField="Company">
<Reader>
<ext:JsonReader IDProperty="Id">
<Fields>
<ext:RecordField Name="Id" Type="Int" />
<ext:RecordField Name="ContractNo" Type="String" />
<ext:RecordField Name="Goods" Type="String" />
<ext:RecordField Name="Flag" Type="String" />
<ext:RecordField Name="DealWeight" Type="Float" />
<ext:RecordField Name="Weight" Type="Float" />
<ext:RecordField Name="LastWeight" Type="Float" />
<ext:RecordField Name="UsableWeight" Type="Float" />
<ext:RecordField Name="Company" Type="String" />
<ext:RecordField Name="OperatTime" Type="Date" SortDir="DESC" />
<ext:RecordField Name="Operator" Type="String" />
<ext:RecordField Name="OperatSite" Type="String" />
<ext:RecordField Name="Operat" Type="String" />
<ext:RecordField Name="Flag" Type="String" />
</Fields>
</ext:JsonReader>
</Reader>
<SortInfo Direction="DESC" Field="OperatTime" />
<Proxy>
<ext:PageProxy />
</Proxy>
</ext:Store>
<ext:Viewport ID="Viewport1" runat="server" Layout="Fit">
<Items>
<ext:GridPanel runat="server" Layout="Fit" Header="false" Frame="true" StoreID="storeMain"
AutoExpandColumn="Company" AutoScroll="true" StripeRows="true" ID="gpMain" TrackMouseOver="true">
<ColumnModel runat="server">
<Columns>
<ext:RowNumbererColumn Width="50" />
<ext:CommandColumn Width="48" Align="Center" Fixed="true">
<Commands>
<ext:GridCommand Icon="ApplicationEdit" ToolTip-Text="编辑" CommandName="Edit">
</ext:GridCommand>
</Commands>
<%--<PrepareToolbar Fn="prepareToolbar" />--%>
</ext:CommandColumn>
<ext:GroupingSummaryColumn ColumnID="ContractNo" DataIndex="ContractNo" Header="合同编号"
Hideable="false" Groupable="false" SummaryType="Count">
<SummaryRenderer Handler="return ((value === 0 || value > 1) ? '(' + value +' 项)' : '(1 项)');" />
</ext:GroupingSummaryColumn>
<ext:Column ColumnID="Goods" DataIndex="Goods" Header="货物名称" />
<%--<ext:Column ColumnID="Flag" DataIndex="Flag" Header="标记" />--%>
<ext:Column ColumnID="Company" DataIndex="Company" Header="收货单位" />
<ext:GroupingSummaryColumn ColumnID="Weight" DataIndex="Weight" Header="合同量" SummaryType="Sum" />
<ext:GroupingSummaryColumn ColumnID="UsableWeight" DataIndex="UsableWeight" Header="本期余量"
Groupable="false" SummaryType="Sum" />
<ext:Column ColumnID="DealWeight" DataIndex="DealWeight" Header="累积" Groupable="false" />
<ext:Column ColumnID="LastWeight" DataIndex="LastWeight" Header="上期余量" Groupable="false" />
<ext:Column ColumnID="Operator" DataIndex="Operator" Header="操作人" />
<ext:DateColumn ColumnID="OperatTime" DataIndex="OperatTime" Header="录入时间" Format="yyyy-MM-dd"
Groupable="true" />
<ext:Column ColumnID="OperatSite" DataIndex="OperatSite" Header="录入地址" />
</Columns>
</ColumnModel>
<DirectEvents>
<Command OnEvent="gpMainCommand">
<EventMask Msg="正在请求处理..." ShowMask="true" />
<ExtraParams>
<ext:Parameter Mode="Raw" Name="Id" Value="record.data.Id" />
<ext:Parameter Mode="Raw" Name="ContractNo" Value="record.data.ContractNo" />
</ExtraParams>
</Command>
</DirectEvents>
<BottomBar>
<ext:PagingToolbar runat="server" ID="pager" StoreID="storeMain" PageSize="15">
<Items>
<ext:ToolbarSeparator />
<ext:Button runat="server" ID="btnAdd" Icon="Add" Text="录入" ToolTip="新增合同">
<Listeners>
<Click Handler="#{winAdd}.show();" />
</Listeners>
</ext:Button>
<ext:Button Hidden="true" runat="server" ID="btnDelete" Icon="Delete" Text="删除" ToolTip="删除合同信息"
Disabled="true">
</ext:Button>
</Items>
</ext:PagingToolbar>
</BottomBar>
<SelectionModel>
<ext:RowSelectionModel runat="server" SingleSelect="true" />
</SelectionModel>
<Plugins>
<ext:GridPanelMaintainScrollPositionOnRefresh runat="server" />
<ext:GroupingSummary runat="server">
</ext:GroupingSummary>
<ext:GridFilters runat="server" ID="gpMainFilter" Local="false" FiltersText="筛选条件">
<Filters>
<ext:StringFilter DataIndex="ContractNo" />
<ext:StringFilter DataIndex="Goods" />
<%--<ext:StringFilter DataIndex="Flag" />--%>
<ext:NumericFilter DataIndex="DealWeight" />
<ext:NumericFilter DataIndex="Weight" />
<ext:NumericFilter DataIndex="LastWeight" />
<ext:NumericFilter DataIndex="UsableWeight" />
<ext:StringFilter DataIndex="Company" />
<ext:DateFilter DataIndex="OperatTime" AfterText="后" BeforeText="前" OnText="指定" />
<ext:StringFilter DataIndex="Operator" />
<ext:StringFilter DataIndex="OperatSite" />
<ext:StringFilter DataIndex="Operat" />
</Filters>
</ext:GridFilters>
</Plugins>
<View>
<ext:GroupingView ID="GroupingView1" GroupByText="以此分组" ShowGroupsText="分组显示" runat="server"
ForceFit="true" MarkDirty="false" ShowGroupName="true" EnableNoGroups="true"
HideGroupedColumn="false" />
</View>
</ext:GridPanel>
</Items>
</ext:Viewport>
<ext:Store runat="server" AutoLoad="true" ID="storeGoods" OnRefreshData="storeGoodsRefreshData"
ShowWarningOnFailure="false">
<Reader>
<ext:JsonReader>
<Fields>
<ext:RecordField Name="Goods" />
</Fields>
</ext:JsonReader>
</Reader>
<Proxy>
<ext:PageProxy />
</Proxy>
</ext:Store>
<ext:Store runat="server" AutoLoad="true" ID="storeCompany" OnRefreshData="storeCompanyRefreshData"
ShowWarningOnFailure="false">
<Reader>
<ext:JsonReader>
<Fields>
<ext:RecordField Name="Company" />
</Fields>
</ext:JsonReader>
</Reader>
<Proxy>
<ext:PageProxy />
</Proxy>
</ext:Store>
<ext:Window runat="server" AutoScroll="true" AnimateTarget="btnAdd" CloseAction="Hide"
Hidden="true" Icon="Add" ID="winAdd" InitCenter="true" Modal="true" Title="录入合同信息"
Width="400" Height="280" Layout="Form" MinWidth="400" MinHeight="280" Resizable="false"
Frame="false" Collapsible="true">
<Content>
<ext:FormPanel runat="server" ID="frmAdd" Header="false" Frame="false" LabelWidth="60"
MonitorValid="true" DefaultAnchor="-20" Border="false" BodyBorder="false" BodyStyle="background-color:#dfe8f6;"
PaddingSummary="10">
<Items>
<ext:TextField runat="server" FieldLabel="合同编号" ID="txtContractNo" AnchorHorizontal="95%"
AllowBlank="false" IsRemoteValidation="true">
<RemoteValidation OnValidation="txtContractNoValidation" BusyTip="验证中..." />
</ext:TextField>
<ext:ComboBox runat="server" ValueField="Company" DisplayField="Company" FieldLabel="收货单位"
ID="cmbCompany" AnchorHorizontal="95%" AllowBlank="false" MinChars="1" ForceSelection="false"
StoreID="storeCompany">
<Triggers>
<ext:FieldTrigger Icon="Clear" Qtip="清空" HideTrigger="true" />
</Triggers>
<Listeners>
<Change Fn="cmbCompanyChange" />
<Select Handler="this.triggers[0].show();" />
<BeforeQuery Handler="this.triggers[0][ this.getRawValue().toString().length == 0 ? 'hide' : 'show']();" />
<TriggerClick Handler="if (index == 0) { this.clearValue(); this.triggers[0].hide(); }" />
</Listeners>
</ext:ComboBox>
<ext:ComboBox runat="server" FieldLabel="货物名称" ID="cmbGoods" AnchorHorizontal="95%"
AllowBlank="false" ForceSelection="false" MinChars="1" DisplayField="Goods" ValueField="Goods"
StoreID="storeGoods">
<Triggers>
<ext:FieldTrigger Icon="Clear" Qtip="清空" HideTrigger="true" />
</Triggers>
<Listeners>
<Change Fn="cmbGoodsChange" />
<Select Handler="this.triggers[0].show();" />
<BeforeQuery Handler="this.triggers[0][ this.getRawValue().toString().length == 0 ? 'hide' : 'show']();" />
<TriggerClick Handler="if (index == 0) { this.clearValue(); this.triggers[0].hide(); }" />
</Listeners>
</ext:ComboBox>
<ext:NumberField runat="server" FieldLabel="合同量(Kg)" ID="numWeight" AnchorHorizontal="95%"
AllowNegative="false" MinValue="1" AllowBlank="false" AllowDecimals="false">
</ext:NumberField>
<%--<ext:RadioGroup runat="server" ID="chkFlag" FieldLabel="标记" AllowBlank="false">
<Items>
<ext:Radio runat="server" BoxLabel="南门" />
<ext:Radio runat="server" BoxLabel="北门" />
</Items>
<Listeners>
<Change Fn="chkFlagChange" />
</Listeners>
</ext:RadioGroup>--%>
<ext:Label runat="server" FieldLabel="上期累积" ID="lblDealWeight" AnchorHorizontal="100%" />
<ext:Label runat="server" FieldLabel="上期余量" ID="lblUsableWeight" AnchorHorizontal="100%" />
</Items>
<Listeners>
<ClientValidation Handler="#{btnAddOk}.setDisabled(!valid);" />
</Listeners>
</ext:FormPanel>
</Content>
<Buttons>
<ext:Button runat="server" ID="btnAddOk" Text="确定" Disabled="true">
<DirectEvents>
<Click OnEvent="btnAddOk_Click">
<Confirmation ConfirmRequest="true" Title="提示" Message="确认数据无误并保存吗?" />
<EventMask ShowMask="true" Msg="合同数据保存中..." />
<%--<ExtraParams>
<ext:Parameter Mode="Raw" Name="flag" Value="editRdoFlag.getValue().boxLabel" />
</ExtraParams>--%>
</Click>
</DirectEvents>
</ext:Button>
<ext:Button runat="server" ID="btnAddCancel" Text="取消">
<Listeners>
<Click Handler="#{winAdd}.hide();" />
</Listeners>
</ext:Button>
</Buttons>
</ext:Window>
<ext:Window runat="server" AutoScroll="true" CloseAction="Hide" Hidden="true" Icon="ApplicationEdit"
ID="winEdit" InitCenter="true" Modal="true" Title="编辑合同信息" Width="500" Height="320"
Layout="Form" MinWidth="500" MinHeight="320" Resizable="true" Frame="false" Collapsible="true">
<Content>
<ext:FormPanel runat="server" ID="frmEdit" Header="false" Frame="false" LabelWidth="70"
MonitorValid="true" DefaultAnchor="-20" Border="false" BodyBorder="false" BodyStyle="background-color:#dfe8f6;"
PaddingSummary="10">
<Items>
<ext:TextField runat="server" FieldLabel="合同编号" ID="editTxtContractNo" AnchorHorizontal="95%"
AllowBlank="false" IsRemoteValidation="true">
<RemoteValidation OnValidation="editTxtContractNoValidation" BusyTip="验证中...">
<ExtraParams>
<ext:Parameter Mode="Raw" Name="oldContractNo" Value="hdnOldContractNo.value" />
</ExtraParams>
</RemoteValidation>
</ext:TextField>
<ext:ComboBox runat="server" ValueField="Company" DisplayField="Company" FieldLabel="收货单位"
ID="editCmbCompany" AnchorHorizontal="95%" AllowBlank="false" MinChars="1" ForceSelection="false"
StoreID="storeCompany">
<Triggers>
<ext:FieldTrigger Icon="Clear" Qtip="清空" HideTrigger="true" />
</Triggers>
<Listeners>
<Select Handler="this.triggers[0].show();" />
<BeforeQuery Handler="this.triggers[0][ this.getRawValue().toString().length == 0 ? 'hide' : 'show']();" />
<TriggerClick Handler="if (index == 0) { this.clearValue(); this.triggers[0].hide(); }" />
</Listeners>
</ext:ComboBox>
<ext:ComboBox runat="server" FieldLabel="货物名称" ID="editCmbGoods" AnchorHorizontal="95%"
AllowBlank="false" ForceSelection="false" MinChars="1" DisplayField="Goods" ValueField="Goods"
StoreID="storeGoods">
<Triggers>
<ext:FieldTrigger Icon="Clear" Qtip="清空" HideTrigger="true" />
</Triggers>
<Listeners>
<Select Handler="this.triggers[0].show();" />
<BeforeQuery Handler="this.triggers[0][ this.getRawValue().toString().length == 0 ? 'hide' : 'show']();" />
<TriggerClick Handler="if (index == 0) { this.clearValue(); this.triggers[0].hide(); }" />
</Listeners>
</ext:ComboBox>
<ext:NumberField runat="server" FieldLabel="合同量(Kg)" ID="editNumWeight" AnchorHorizontal="95%"
AllowNegative="false" MinValue="0" AllowBlank="false" AllowDecimals="false">
</ext:NumberField>
<ext:NumberField runat="server" FieldLabel="本期余量" ID="editNumUsableWeight" AnchorHorizontal="95%"
AllowNegative="false" MinValue="0" AllowBlank="false" AllowDecimals="false">
</ext:NumberField>
<ext:NumberField runat="server" FieldLabel="累积" ID="editNumDealWeight" AnchorHorizontal="95%"
AllowNegative="false" MinValue="0" AllowBlank="false" AllowDecimals="false">
</ext:NumberField>
<ext:NumberField runat="server" FieldLabel="上期余量" ID="editNumLastWeight" AnchorHorizontal="95%"
AllowNegative="false" MinValue="0" AllowBlank="false" AllowDecimals="false">
</ext:NumberField>
<%--<ext:RadioGroup runat="server" ID="editRdoFlag" FieldLabel="标记" AllowBlank="false" AnchorHorizontal="95%">
<Items>
<ext:Radio ID="Radio1" runat="server" BoxLabel="南门" />
<ext:Radio ID="Radio2" runat="server" BoxLabel="北门" />
</Items>
</ext:RadioGroup>--%>
</Items>
<Listeners>
<ClientValidation Handler="#{btnEdit}.setDisabled(!valid);" />
</Listeners>
</ext:FormPanel>
</Content>
<Listeners>
<Show Handler="#{editTxtContractNo}.remoteValidate();" />
</Listeners>
<Buttons>
<ext:Button runat="server" ID="btnEdit" Text="保存修改" Disabled="false">
<DirectEvents>
<Click OnEvent="btnEditOk_Click">
<Confirmation ConfirmRequest="true" Title="提示" Message="确认数据无误并保存吗?" />
<EventMask ShowMask="true" Msg="合同数据保存中..." />
<ExtraParams>
<ext:Parameter Mode="Raw" Name="oldId" Value="hdnOldId.getValue()" />
<ext:Parameter Mode="Raw" Name="oldContractNo" Value="hdnOldContractNo.value" />
<%--<ext:Parameter Mode="Raw" Name="flag" Value="editRdoFlag.getValue().boxLabel" />--%>
</ExtraParams>
</Click>
</DirectEvents>
</ext:Button>
<ext:Button runat="server" ID="btnEditCancel" Text="取消">
<Listeners>
<Click Handler="#{winEdit}.hide();" />
</Listeners>
</ext:Button>
</Buttons>
</ext:Window>
</form>
</body>
</html>
前端Default.js代码部分
/// <reference name="Ext.Net.Build.Ext.Net.extjs.adapter.ext.ext-base.js" assembly="Ext.Net" />
/// <reference name="Ext.Net.Build.Ext.Net.extjs.adapter.ext.ext-base-debug.js" assembly="Ext.Net" />
/// <reference name="Ext.Net.Build.Ext.Net.extjs.ext-all-debug.js" assembly="Ext.Net" />
/// <reference name="Ext.Net.Build.Ext.Net.extjs.ext-all.js" assembly="Ext.Net" />
function cmbGoodsChange(sender, newValue, oldValue) {
var goods = newValue;
var company = cmbCompany.value;
//var flag = chkFlag.getValue().boxLabel;
if (goods && company && goods.trim().length > 0 && company.trim().length > 0) {
Ext.net.DirectMethods.GetLastContract(goods, company, {
success: function (model) {
if (model != null && (model.DealWeight || model.UsableWeight)) {
lblDealWeight.setText(String(model.DealWeight));
lblUsableWeight.setText(String(model.UsableWeight));
}
else {
lblDealWeight.setText('0');
lblUsableWeight.setText('0');
}
}
});
}
}
function cmbCompanyChange(sender, newValue, oldValue) {
var goods = cmbGoods.value;
var company = newValue;
//var flag = chkFlag.getValue().boxLabel;
if (goods && company && goods.trim().length > 0 && company.trim().length > 0) {
Ext.net.DirectMethods.GetLastContract(goods, company, {
success: function (model) {
if (model != null && (model.DealWeight || model.UsableWeight)) {
lblDealWeight.setText(String(model.DealWeight));
lblUsableWeight.setText(String(model.UsableWeight));
}
else {
lblDealWeight.setText('0');
lblUsableWeight.setText('0');
}
}
});
}
}
function chkFlagChange(sender, checkedRdo) {
var goods = cmbGoods.value;
var company = newValue;
//var flag = chkFlag.getValue().boxLabel;
if (goods && company && goods.trim().length > 0 && company.trim().length > 0) {
Ext.net.DirectMethods.GetLastContract(goods, company, {
success: function (model) {
if (model != null && (model.DealWeight || model.UsableWeight)) {
lblDealWeight.setText(String(model.DealWeight));
lblUsableWeight.setText(String(model.UsableWeight));
}
else {
lblDealWeight.setText('0');
lblUsableWeight.setText('0');
}
}
});
}
}
function winEditShow() {
btnEdit.setDisabled(!frmEdit.isValid());
}
//未调用
function prepareToolbar(grid, toolbar, rowIndex, record) {
// for example hide 'Edit' button if price < 50
if (record.get("UsableWeight") <= 0) {
//hide separator
toolbar.items.itemAt(0).hide();
//hide edit button
//toolbar.items.itemAt(2).hide();
} else {
//otherwise add another button
toolbar.add(new Ext.Button({
iconCls: "icon-accept",
command: "accept"
}));
}
}
后端Default.aspx.cs代码
using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Text;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Ext.Net;
using Hollysys.Devices.BusinessEntities.Ping;
using Hollysys.Devices.BusinessLogic.Ping;
using ScaleWeight.Model;
public partial class ContractManager_Default : System.Web.UI.Page
{
private string m_cookieName = ConfigurationManager.AppSettings["CookieUserName"];
private string m_userName = String.Empty;
protected void Page_Load(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(m_cookieName) && Request.Cookies[m_cookieName] != null)
{
m_userName = Request.Cookies[m_cookieName].Value;
}
else
{
m_userName = Request.UserHostName;
}
}
protected void storeMainRefreshData(object sender, StoreRefreshDataEventArgs e)
{
int _pageSize = this.pager.PageSize;
int _curPageIndex = e.Start / _pageSize + 1;
string _where = String.Empty;
string _orderBy = String.Empty;
#region 查询条件
StringBuilder _sbFilter = new StringBuilder();
string _filters = e.Parameters[this.gpMainFilter.ParamPrefix];
if (!String.IsNullOrEmpty(_filters))
{
FilterConditions fc = new FilterConditions(_filters);
foreach (FilterCondition condition in fc.Conditions)
{
string field = condition.Name;
switch (field)
{
case "ContractNo":
_sbFilter.AppendFormat(" AND ContractNo LIKE '%{0}%' ", condition.Value);
break;
case "Goods":
_sbFilter.AppendFormat(" AND Goods LIKE '%{0}%' ", condition.Value);
break;
case "Company":
_sbFilter.AppendFormat(" AND Company LIKE '%{0}%' ", condition.Value);
break;
case "OperatSite":
_sbFilter.AppendFormat(" AND OperatSite LIKE '%{0}%' ", condition.Value);
break;
case "Operat":
_sbFilter.AppendFormat(" AND Operat LIKE '%{0}%' ", condition.Value);
break;
case "DealWeight":
double _delWeight = condition.ValueAsDouble;
switch (condition.Comparison)
{
case Comparison.Eq:
_sbFilter.AppendFormat(" AND DealWeight={0} ", _delWeight);
break;
case Comparison.Gt:
_sbFilter.AppendFormat(" AND DealWeight>{0} ", _delWeight);
break;
case Comparison.Lt:
_sbFilter.AppendFormat(" AND DealWeight<{0} ", _delWeight);
break;
default:
break;
}
break;
case "Weight":
double _weight = condition.ValueAsDouble;
switch (condition.Comparison)
{
case Comparison.Eq:
_sbFilter.AppendFormat(" AND Weight={0} ", _weight);
break;
case Comparison.Gt:
_sbFilter.AppendFormat(" AND Weight>{0} ", _weight);
break;
case Comparison.Lt:
_sbFilter.AppendFormat(" AND Weight<{0} ", _weight);
break;
default:
break;
}
break;
case "LastWeight":
double _lastWeight = condition.ValueAsDouble;
switch (condition.Comparison)
{
case Comparison.Eq:
_sbFilter.AppendFormat(" AND LastWeight={0} ", _lastWeight);
break;
case Comparison.Gt:
_sbFilter.AppendFormat(" AND LastWeight>{0} ", _lastWeight);
break;
case Comparison.Lt:
_sbFilter.AppendFormat(" AND LastWeight<{0} ", _lastWeight);
break;
default:
break;
}
break;
case "UsableWeight":
double _usableWeight = condition.ValueAsDouble;
switch (condition.Comparison)
{
case Comparison.Eq:
_sbFilter.AppendFormat(" AND UsableWeight={0} ", _usableWeight);
break;
case Comparison.Gt:
_sbFilter.AppendFormat(" AND UsableWeight>{0} ", _usableWeight);
break;
case Comparison.Lt:
_sbFilter.AppendFormat(" AND UsableWeight<{0} ", _usableWeight);
break;
default:
break;
}
break;
case "Operator":
_sbFilter.AppendFormat(" AND Operator LIKE '%{0}%' ", condition.Value);
break;
case "OperatTime":
DateTime _operatTime = condition.ValueAsDate;
switch (condition.Comparison)
{
case Comparison.Eq:
_sbFilter.AppendFormat(" AND (OperatTime BETWEEN '{0}' AND '{1}') ", _operatTime.ToString("yyyy-MM-dd 00:00:00"), _operatTime.ToString("yyyy-MM-dd 23:59:59"));
break;
case Comparison.Gt:
_sbFilter.AppendFormat(" AND (OperatTime>'{0}' OR OperaTime='{0}') ", _operatTime.ToString("yyyy-MM-dd"));
break;
case Comparison.Lt:
_sbFilter.AppendFormat(" AND (OperatTime<'{0}' OR OperaTime='{0}') ", _operatTime.ToString("yyyy-MM-dd"));
break;
default:
break;
}
break;
default:
break;
}
if (_sbFilter.Length > 0)
{
_where = String.Format(" (UsableWeight>-1 {0})", _sbFilter.ToString());
}
}
}
#endregion 查询条件
#region 排序
_orderBy = String.Format(" {0} {1} ", e.Sort, e.Dir == Ext.Net.SortDirection.ASC ? "ASC" : "DESC");
#endregion 排序
MM_ContractLogic _logic = new MM_ContractLogic();
List<ModelContract> _list = new List<ModelContract>();
if (_logic != null)
{
_list = _logic.GetModelPageList(_pageSize, _curPageIndex, _where);
e.Total = _logic.GetRecordCount(_where);
}
storeMain.DataSource = _list;
storeMain.DataBind();
}
protected void storeCompanyRefreshData(object sender, StoreRefreshDataEventArgs e)
{
MM_ContractLogic _logic = new MM_ContractLogic();
storeCompany.DataSource = _logic.Distinct("Company");
storeCompany.DataBind();
}
protected void storeGoodsRefreshData(object sender, StoreRefreshDataEventArgs e)
{
MM_ContractLogic _logic = new MM_ContractLogic();
storeGoods.DataSource = _logic.Distinct("Goods");
storeGoods.DataBind();
}
protected void btnAddOk_Click(object sender, DirectEventArgs e)
{
ModelContract _model = new ModelContract();
_model.ContractNo = txtContractNo.Text.Trim();
_model.Company = cmbCompany.Text;
_model.Goods = cmbGoods.Text;
_model.Weight = (decimal)numWeight.Number;
_model.OperatTime = DateTime.Now;
_model.Operat = "新增";
_model.Operator = m_userName;
_model.OperatSite = Request.UserHostAddress;
//_model.Flag = _model.Flag = e.ExtraParams["flag"];
MM_ContractLogic _logic = new MM_ContractLogic();
//再次对合同号验证
if (_logic.ExistsContractNo(_model.ContractNo))
{
gpMain.Reload();
X.MessageBox.Alert("提示", String.Format("合同号 {0} 已经存在,请重新输入.", _model.ContractNo)).Show();
return;
}
if (_logic.Add(_model) > 0)
{
X.MessageBox.Alert("提示", "保存合同 成功.").Show();
txtContractNo.Reset();
cmbGoods.Reset();
cmbCompany.Reset();
numWeight.Reset();
lblDealWeight.Text = "0";
lblUsableWeight.Text = "0";
gpMain.Reload();
}
else
{
X.MessageBox.Alert("提示", "保存合同失败.请稍后再试或与系统管理员联系.").Show();
}
}
protected void btnEditOk_Click(object sender, DirectEventArgs e)
{
ModelContract _model = new ModelContract();
_model.Id = Int32.Parse(e.ExtraParams["oldId"]);
_model.ContractNo = editTxtContractNo.Text.Trim();
_model.Company = editCmbCompany.Text;
_model.Goods = editCmbGoods.Text;
_model.Weight = (decimal)editNumWeight.Number;
_model.DealWeight = (decimal)editNumDealWeight.Number;
_model.LastWeight = (decimal)editNumLastWeight.Number;
_model.UsableWeight = (decimal)editNumUsableWeight.Number;
_model.OperatTime = DateTime.Now;
_model.Operat = "修改";
_model.Operator = m_userName;
_model.OperatSite = Request.UserHostAddress;
//_model.Flag = e.ExtraParams["flag"];
MM_ContractLogic _logic = new MM_ContractLogic();
//再次验证合同号
string _oldContractNo = e.ExtraParams["oldContractNo"];
if (String.IsNullOrEmpty(_oldContractNo) || _logic.ExistsContractNo(_model.ContractNo, _oldContractNo))
{
gpMain.Reload();
X.MessageBox.Alert("提示", String.Format("合同号 {0} 已经存在,请重新输入.", _model.ContractNo)).Show();
}
try
{
_logic.Update(_model);
gpMain.Reload();
winEdit.Hide();
X.MessageBox.Alert("提示", "保存合同 成功.").Show();
}
catch(Exception ex)
{
X.MessageBox.Alert("提示", "保存合同失败.请稍后再试或与系统管理员联系.<br />详细信息:"+ex.Message).Show();
}
}
protected void gpMainCommand(object sender, DirectEventArgs e)
{
hdnOldContractNo.SetRawValue("");
hdnOldId.SetRawValue("");
string Id = e.ExtraParams["Id"];
string oldContractNo = e.ExtraParams["ContractNo"];
ModelContract _model = null;
MM_ContractLogic _logic = new MM_ContractLogic();
_model = _logic.GetModel(Int32.Parse(Id));
hdnOldContractNo.SetRawValue(oldContractNo);
hdnOldId.SetRawValue(Id);
winEdit.Title = "编辑合同" + oldContractNo;
editTxtContractNo.Value = _model.ContractNo;
editCmbCompany.SetValue(_model.Company);
editCmbGoods.SetValue(_model.Goods);
editNumDealWeight.Number = (double)_model.DealWeight;
editNumLastWeight.Number = (double)_model.LastWeight;
editNumUsableWeight.Number = (double)_model.UsableWeight;
editNumWeight.Number = (double)_model.Weight;
//foreach (Radio rdo in editRdoFlag.Items)
//{
// if (rdo.BoxLabel == _model.Flag)
// {
// rdo.Checked = true;
// }
//}
winEdit.Show();
}
protected void editTxtContractNoValidation(object sender, RemoteValidationEventArgs e)
{
string _oldContractNo = e.ExtraParams["oldContractNo"];
TextField txtContractNo = sender as TextField;
if (txtContractNo != null)
{
string contractNo = txtContractNo.Text;
if (String.IsNullOrEmpty(contractNo) || contractNo.Trim().Length == 0)
{
e.Success = false;
e.ErrorMessage = "请输入合同号.";
return;
}
MM_ContractLogic _logic = new MM_ContractLogic();
if (!_logic.ExistsContractNo(contractNo,_oldContractNo))
{
e.Success = true;
}
else
{
e.Success = false;
e.ErrorMessage = "此合同号已存在,请重新输入.";
}
}
}
protected void txtContractNoValidation(object sender, RemoteValidationEventArgs e)
{
TextField txtContractNo = sender as TextField;
if (txtContractNo != null)
{
string contractNo = txtContractNo.Text;
if (String.IsNullOrEmpty(contractNo) || contractNo.Trim().Length == 0)
{
e.Success = false;
e.ErrorMessage = "请输入合同号.";
return;
}
MM_ContractLogic _logic = new MM_ContractLogic();
if (!_logic.ExistsContractNo(contractNo))
{
e.Success = true;
}
else
{
e.Success = false;
e.ErrorMessage = "此合同号已存在,请重新输入.";
}
}
}
/// <summary>
/// 获取最近一份合同
/// </summary>
/// <param name="goods"></param>
/// <param name="company"></param>
/// <returns></returns>
[DirectMethod]
public static ModelContract GetLastContract(string goods, string company)
{
MM_ContractLogic _logic = new MM_ContractLogic();
return _logic.GetLastContract(goods, company);
}
}
再次送上Web.config
<?xml version="1.0"?>
<!--
注意: 除了手动编辑此文件以外,您还可以使用
Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
“网站”->“Asp.Net 配置”选项。
设置和注释的完整列表在
machine.config.comments 中,该文件通常位于
\Windows\Microsoft.Net\Framework\v2.x\Config 中
-->
<configuration>
<configSections>
<section name="extnet" type="Ext.Net.GlobalConfig" requirePermission="false" />
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
</sectionGroup>
</sectionGroup>
</sectionGroup>
</configSections>
<appSettings>
<add key="CookieUserName" value="mesmain_name"/>
<add key="DefaultValidationRuleSet" value="RuleSetDefault"/>
<!--默认校验规则-->
<!--需要合同的物料(或产品),多个用分号(;)分割-->
<add key="NeedContractGoods" value="水渣;渣土;"/>
</appSettings>
<connectionStrings>
<add name="ConnectionString1" connectionString="Data Source=.;Initial Catalog=MyDb;User ID=sa;Password=sa" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
<!--
设置 compilation debug="true" 将调试符号插入
已编译的页面中。但由于这会
影响性能,因此只在开发过程中将此值
设置为 true。
-->
<compilation debug="true">
<assemblies>
<add assembly="System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Management, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Configuration.Install, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
<!--
通过 <authentication> 节可以配置 ASP.NET 使用的
安全身份验证模式,
以标识传入的用户。
-->
<authentication mode="Windows"/>
<pages>
<controls>
<add tagPrefix="elValidation" assembly="Microsoft.Practices.EnterpriseLibrary.Validation.Integration.AspNet" namespace="Microsoft.Practices.EnterpriseLibrary.Validation.Integration.AspNet"/>
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</controls>
</pages>
<!--
如果在执行请求的过程中出现未处理的错误,
则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
开发人员通过该节可以配置
要显示的 html 错误页
以代替错误堆栈跟踪。
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
-->
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" validate="false" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add path="*/ext.axd" verb="*" type="Ext.Net.ResourceHandler" validate="false" />
</httpHandlers>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="DirectRequestModule" type="Ext.Net.DirectRequestModule, Ext.Net" />
</httpModules>
</system.web>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="OptionInfer" value="true"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
</compilers>
</system.codedom>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules>
<remove name="ScriptModule"/>
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="DirectRequestModule" preCondition="managedHandler" type="Ext.Net.DirectRequestModule, Ext.Net" />
</modules>
<handlers>
<remove name="WebServiceHandlerFactory-Integrated"/>
<remove name="ScriptHandlerFactory"/>
<remove name="ScriptHandlerFactoryAppServices"/>
<remove name="ScriptResource"/>
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" preCondition="integratedMode" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="DirectRequestHandler" verb="*" path="*/ext.axd" preCondition="integratedMode" type="Ext.Net.ResourceHandler" />
</handlers>
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
欢迎大家提问题及建议。
Q群:120521984(人满,每日清理中…)