zoukankan      html  css  js  c++  java
  • 使用jquery+一般处理程序异步载入信息

    需求:有时候。web界面对性能要求比較高。我们就不考虑使用asp.net控件。而是使用html标签+jquery+一般处理程序来进行异步处理。


    aspx代码:

       <asp:Repeater ID="rptRecordList" runat="server">
                                        <HeaderTemplate>
                                            <table style=" 100%;">
                                        </HeaderTemplate>
                                        <ItemTemplate>
                                            <tr class="order-item">
                                                <td style=" 96px;" class="item">
                                                    <span style="margin-right: 4px;"><%# Container.ItemIndex +1 %></span>
                                                    <input type="radio" id="rbtn1" value='<%#Eval("hx_t_watermeterid")%>' />
                                                </td>
                                                <td style=" 201px;" class="item"><%#Eval("name") %></td>
                                                <td style=" 200px;" class="item"><%#Eval("accountnumber") %></td>
                                                <td style=" 200px;" class="last"><%#Eval("hx_fmetercode") %></td>
                                            </tr>
                                        </ItemTemplate>
                                        <FooterTemplate></table></FooterTemplate>
                                    </asp:Repeater>
    <div id="JTabView" class="tabs-container" style="margin-right: 4px; top: 0px; left: 0px; margin-bottom: -37px;">
                            <div class="tabs-panels">
                                <div style="display: block;" class="info-box order-info ks-switchable-panel-internal41">
                                    <div class="bd">
                                        <div class="contact-info">
                                            <h3>客户信息</h3>
                                            <dl>
                                                <dt style=" 90px;">客户:</dt>
                                                <dd>
                                                    <span id=""></span>
                                                    <span id="lblClientName"></span>
                                                </dd>
                                                <dt>编号:</dt>
                                                <dd>
                                                    <span id="lblClientNo"></span>
                                                </dd>
                                                <dt>电话:</dt>
                                                <dd>
                                                    <span id="lblCell"></span>
                                                </dd>
                                                <dt>手机:</dt>
                                                <dd>
                                                    <span id="lblTel"></span>
                                                </dd>
                                            </dl>
                                            <div class="clearfix"></div>
                                        </div>
                                        <hr />
                                        <div class="water-info">
                                            <h3>水表信息</h3>
                                            <dl>
                                                <dt style=" 90px;">水表编码:</dt>
                                                <dd>
                                                    <span id="lblMeterCode"></span>
                                                </dd>
                                                <dt>电子表号:</dt>
                                                <dd>
                                                    <span id="lblElectronicMeteNo"></span>
                                                </dd>
                                                <dt>水表状态:</dt>
                                                <dd>
                                                    <span id="lblMeterStatus"></span>
                                                </dd>
                                            </dl>
                                            <dl>
                                                <dt style=" 90px;">地址:
                                                </dt>
                                                <dd style=" auto">
                                                    <span id="lblMeterAddress"></span>
                                                </dd>
                                            </dl>
                                            <div class="clearfix"></div>
                                        </div>
                                        <hr />
                                        <div class="water-info">
                                            <h3>用水信息</h3>
                                            <dl>
                                                <dt>用水性质:</dt>
                                                <dd>
                                                    <span id="lblWaterNature"></span>
                                                </dd>
                                                <dt>水费单位价格:</dt>
                                                <dd>
                                                    <span id="lblWaterPrice"></span>
                                                </dd>
                                                <dt>污水费单位价格:</dt>
                                                <dd style=" 129px;">
                                                    <span id="lblSewagePrice"></span>
                                                </dd>
                                            </dl>
                                            <dl>
                                                <dt>用水人口:</dt>
                                                <dd>
                                                    <span id="lblWaterPopulation"></span>
                                                </dd>
                                                <dt>是否阶梯水价:</dt>
                                                <dd>
                                                    <span id="lblIsLadder" runat="server">否</span>
                                                </dd>
                                                <dt>结算前账户剩余金额:</dt>
                                                <dd>
                                                    <span id="lblBalance"></span>
                                                </dd>
                                            </dl>
                                            <div class="clearfix"></div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
    
    css代码我就省略了,直接列js代码:
            var getAccountInfo = function (data) {
                $("#lblClientName").html(data.ClientName);
                $("#lblClientNo").html(data.ClientNo);
                $("#lblCell").html(data["Cell"]);
                $("#lblTel").html(data["Tel"]);
    
                $("#lblMeterCode").html(data["MeterCode"]);
                $("#lblElectronicMeteNo").html(data["ElectronicMeteNo"]);
                $("#lblMeterStatus").html(data["MeterStatus"]);
                $("#lblMeterAddress").html(data["MeterAddress"]);
    
                $("#lblWaterNature").html(data["WaterNature"]);
                $("#lblWaterPrice").html(data["WaterPrice"]);
                $("#lblSewagePrice").html(data["SewagePrice"]);
                $("#lblWaterPopulation").html(data["WaterPopulation"]);
    
                var error = data["error"];
                if (error != null && error != undefined && error != "") {
                    error = errorMsg + error;
                    $("#spnError").html(error);
                    $("#divError").attr("visibility", "visible");
                }
                else {
                    $("#spnError").html("");
                    $("#divError").attr("visibility", "hidden");
                };
            }
            //依据选中的水表来客户具体信息
            function getInfoBySelect(meterId) {
                $.getJSON("Handlers/PrepaymentBusinessHandler.ashx", { "meterId": meterId }, getAccountInfo);
            }
       $(document).ready(function () {
                    //$("#tbList tr:odd").addClass("alt"); 偶数行样式
                    //$("#tbList tr:even").css("background-color", "white"); //奇数行样式
                    $("#tbList tr").hover(function () { $(this).addClass('overCss'); }, function () { $(this).removeClass('overCss'); }).click(
                        function (e) {
                            if ($(e.srcElement || e.target).attr("type") != "radio") {
                                $(this).find(":radio").click(); //$(this).find(":radio").attr("checked", true);有问题
                            }
                        });
                    $("#tbList input[type='radio']").click(function () {
                        $(this).parent().parent().addClass('clickCss')
                        .siblings().removeClass('clickCss')
                        .end();
                        getInfoBySelect($(this).val());
                    });
                });
    
    一般处理程序:
        /// <summary>
        /// PrepaymentBusinessHandler 的摘要说明
        /// </summary>
        public class PrepaymentBusinessHandler : IHttpHandler
        {
            IOrganizationService _serviceProxy = PrepaymentBusinessHandle._serviceProxy;
            int _maxReturnCount = 10;
            string error = string.Empty;
    
            public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/plain";
                string meterId = context.Request["meterId"];
                JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
                string outputString =GetModel(meterId)==null?string.Empty: jsonSerializer.Serialize(GetModel(meterId));
    
                if(!string.IsNullOrEmpty(error))
                {
                    outputString =string.IsNullOrEmpty(outputString)?"{"error":""+ error+""}":outputString.Trim('}')+","error":""+ error+""}";
                }
                context.Response.Write(outputString);
            }
    
            /// <summary>
            /// 依据选择的记录获取客户具体信息
            /// <param name="accountNumber">水表ID</param>
            /// </summary>
            /// <returns></returns>
            EntityCollection GetAccountInfoBySelectRecord(string meterId)
            {
                EntityCollection etResults = null;
                if (string.IsNullOrEmpty(meterId))
                {
                    return etResults;
                }
                string fetchXml = @"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false' count='" + _maxReturnCount.ToString() + @"'>
                    <entity name='hx_t_customerandmeterrela'>
                    <attribute name='hx_fwaterpropertyid' />
                    <attribute name='hx_fmeterid' />
                    <attribute name='hx_faccountid' />
                    <filter type='and'>
                    <condition attribute='hx_fmeterid' operator='eq' value='"
                                + meterId + @"'/> </filter>
                    <link-entity name='account' from='accountid' to='hx_faccountid' link-type='outer' alias='t_account'>
          	          <attribute name='accountnumber' />
                      <attribute name='name' />
                      <attribute name='telephone1' />
                      <attribute name='telephone2' />
                      <attribute name='hx_ffamilysize' />
                    </link-entity>
                    <link-entity name='hx_t_watermeter' from='hx_t_watermeterid' to='hx_fmeterid' link-type='outer' alias='t_meter'>
                      <attribute name='hx_feleno' />
                      <attribute name='hx_fmetercode' />
                      <attribute name='hx_fstate' />
                      <attribute name='hx_faddress' />
                    </link-entity>
                    <link-entity name='hx_t_waterproperty' from='hx_t_waterpropertyid' to='hx_fwaterpropertyid' link-type='outer' alias='t_fwaterproperty'>
                      <attribute name='hx_faliasname' />
                      <attribute name='hx_fwaterbasicprice' />
                      <attribute name='hx_fcollchargesbasicprice4' />
                    </link-entity>
                   </entity>
                          </fetch>";
                try
                {
                    etResults = this._serviceProxy.RetrieveMultiple(new FetchExpression(fetchXml));
                }
                catch (Exception ex)
                {
                    error = ex.Message;
                }
    
                return etResults;
            }
    
            /// <summary>
            /// 依据水表ID获取账户具体信息
            /// </summary>
            /// <param name="meterId">水表ID</param>
            /// <returns></returns>
            public AccountInfoEntity GetModel(string meterId)
            {
                AccountInfoEntity entity = new AccountInfoEntity();
                EntityCollection entitys = GetAccountInfoBySelectRecord(meterId);
                if (entitys != null && entitys.Entities.Count > 0)
                {
                    entity.ClientName = entitys.Entities[0].Contains("t_account.name") && entitys.Entities[0]["t_account.name"] != null ? ((AliasedValue)entitys.Entities[0].Attributes["t_account.name"]).Value.ToString() : string.Empty;
                    entity.ClientNo = entitys.Entities[0].Contains("t_account.accountnumber") && entitys.Entities[0]["t_account.accountnumber"] != null ?

    ((AliasedValue)entitys.Entities[0].Attributes["t_account.accountnumber"]).Value.ToString() : string.Empty; entity.Cell = entitys.Entities[0].Contains("t_account.telephone1") && entitys.Entities[0]["t_account.telephone1"] != null ? ((AliasedValue)entitys.Entities[0].Attributes["t_account.telephone1"]).Value.ToString() : string.Empty; entity.Tel = entitys.Entities[0].Contains("t_account.telephone2") && entitys.Entities[0]["t_account.telephone2"] != null ?

    ((AliasedValue)entitys.Entities[0].Attributes["t_account.telephone2"]).Value.ToString() : string.Empty; entity.MeterCode = entitys.Entities[0].Contains("t_meter.hx_fmetercode") && entitys.Entities[0]["t_meter.hx_fmetercode"] != null ? ((AliasedValue)entitys.Entities[0].Attributes["t_meter.hx_fmetercode"]).Value.ToString() : string.Empty; entity.ElectronicMeteNo = entitys.Entities[0].Contains("t_meter.hx_feleno") && entitys.Entities[0]["t_meter.hx_feleno"] != null ? ((AliasedValue)entitys.Entities[0].Attributes["t_meter.hx_feleno"]).Value.ToString() : string.Empty; string state = entitys.Entities[0].Contains("t_meter.hx_fstate") && entitys.Entities[0]["t_meter.hx_fstate"] != null ?

    ((OptionSetValue)((AliasedValue)entitys.Entities[0]["t_meter.hx_fstate"]).Value).Value.ToString() : string.Empty; if (state == "0") { state = "新装"; }; if (state == "1") { state = "已开户"; }; if (state == "2") { state = "销户"; }; if (state == "3") { state = "停水"; }; if (state == "4") { state = "被更换"; }; if (state == "5") { state = "未开户"; }; if (state == "6") { state = "撤户停查"; }; entity.MeterStatus = state; entity.MeterAddress = entitys.Entities[0].Contains("t_meter.hx_faddres") && entitys.Entities[0]["t_meter.hx_faddres"] != null ?

    ((AliasedValue)entitys.Entities[0].Attributes["t_meter.hx_faddress"]).Value.ToString() : string.Empty; entity.WaterNature = entitys.Entities[0].Contains("t_fwaterproperty.hx_faliasname") && entitys.Entities[0]["t_fwaterproperty.hx_faliasname"] != null ?

    ((AliasedValue)entitys.Entities[0].Attributes["t_fwaterproperty.hx_faliasname"]).Value.ToString() : string.Empty; entity.WaterPrice = entitys.Entities[0].Contains("t_fwaterproperty.hx_fwaterbasicprice") && entitys.Entities[0]["t_fwaterproperty.hx_fwaterbasicprice"] != null ?

    ((AliasedValue)entitys.Entities[0].Attributes["t_fwaterproperty.hx_fwaterbasicprice"]).Value.ToString() : string.Empty; entity.SewagePrice = entitys.Entities[0].Contains("t_fwaterproperty.hx_fcollchargesbasicprice4") && entitys.Entities[0]["t_fwaterproperty.hx_fcollchargesbasicprice4"] != null ? ((AliasedValue)entitys.Entities[0].Attributes["t_fwaterproperty.hx_fcollchargesbasicprice4"]).Value.ToString() : string.Empty; entity.WaterPopulation = entitys.Entities[0].Contains("t_account.hx_ffamilysize") && entitys.Entities[0]["t_account.hx_ffamilysize"] != null ? ((AliasedValue)entitys.Entities[0].Attributes["t_account.hx_ffamilysize"]).Value.ToString() : string.Empty; } return entity; } public bool IsReusable { get { return false; } } } public class AccountInfoEntity { /// <summary> /// 客户名称 /// </summary> public string ClientName { get; set; } /// <summary> /// 编号 /// </summary> public string ClientNo { get; set; } /// <summary> /// 电话 /// </summary> public string Cell { get; set; } /// <summary> /// 手机 /// </summary> public string Tel { get; set; } /// <summary> /// 水表编码 /// </summary> public string MeterCode { get; set; } /// <summary> /// 电子表号 /// </summary> public string ElectronicMeteNo { get; set; } /// <summary> /// 水表状态 /// </summary> public string MeterStatus { get; set; } /// <summary> /// 水表地址 /// </summary> public string MeterAddress { get; set; } /// <summary> /// 用水性质 /// </summary> public string WaterNature { get; set; } /// <summary> /// 水费单位价格 /// </summary> public string WaterPrice { get; set; } /// <summary> /// 污水费单位价格 /// </summary> public string SewagePrice { get; set; } /// <summary> /// 用水人口 /// </summary> public string WaterPopulation { get; set; } }

    思路:使用jquery发送请求,并传递參数给一般处理程序。一般处理程序从数据库中获取数据后先序列化然后再传回web界面,再使用jquery反序列化获取信息。




  • 相关阅读:
    【BZOJ3506】[CQOI2014] 排序机械臂(Splay)
    2019年1月训练记录(1.01~1.31)
    再学点分治——动态点分治
    【洛谷5113】Sabbat of the witch(毒瘤分块)
    【洛谷1501】[国家集训队] Tree II(LCT维护懒惰标记)
    初学后缀自动机
    【洛谷3950】部落冲突(LCT维护连通性)
    【BZOJ2049】[SDOI2008] Cave 洞穴勘测(LCT维护连通性)
    LCT入门
    【BZOJ4650】[NOI2016] 优秀的拆分(后缀数组)
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5090979.html
Copyright © 2011-2022 走看看