• Ajax无刷新数据绑定


    AJAX动态无刷新绑定

    项目中客户想要达到这样的效果,请教了同事之后作出的。虽然对于Ajax还不熟悉,暂时存放在这儿,以备学习Ajax后查看。原理慢慢搞清楚。

    根据是否是KPI,动态绑定不同的数据源。在这里是有一个KPI的过滤。radiobutton用的是input type="radio" name="kpiAll" id="checkKPI" value="true" checked="checked" />KPI <input type="radio" name="kpiALL" id="checkKpiAll" value="false" />ALL. 绑定到弹出层中,也是用<input type="checkbox" name="case1"/>接收的,case1的checkbox的定义是在GetCase.aspx.cs后台动态生成的。效果图如下:

     

    在KPI和ALL切换时候,只刷新对应的绑定Case部分,其他部分无刷新。不会影响页面的其他选择(或者说会保持其他条件选项)。

    HTML Source
    <html>
    <head runat="server">
    <title>BindData without Refresh</title>
    <script src="Theme/JS/jquery.js" type="text/javascript"></script>

    <script src="Theme/JS/data.js" type="text/javascript"></script>
    </head>
    <body>
    <form id="form1" runat="server" method="post">
    <div>
    <asp:TextBox ID="txtCaseName" Width="500px" runat="server" Text="" ReadOnly="true"></asp:TextBox>
    <div id="divBoxCase" class="divBoxCase" runat="server" style="position: absolute; background-color: #FFF; border: solid 1px #333; height: 300px; 540px; overflow: auto; left: 0px; top: 25px; z-index: 9999; display: none; margin-top: 7px; margin-left: 3px;">
    </div>
    <div style="position: absolute; top: 0px; left: 540px; margin-left: 5px;">
    <input type="radio" name="kpiAll" id="checkKPI" value="true" checked="checked" />KPI
    <input type="radio" name="kpiALL" id="checkKpiAll" value="false" />ALL
    </div>
    </div>
    </form>
    </body>
    </html>
     新建一个WebForm.aspx,命名GetCase.aspx. 在后台代码中绑定数据源。代码如下:
    View Code
     1 protected void Page_Load(object sender, EventArgs e)
    2 {
    3 CaseBLL caseBLL = new CaseBLL();
    4 DataTable dtCase = new DataTable();
    5
    6 string checkAll = string.Empty;
    7 if (Request.QueryString["Flag"] != null)
    8 {
    9 checkAll = Request.QueryString["Flag"].ToString();
    10 }
    11
    12 if (checkAll == "All")
    13 {
    14 dtCase = caseBLL.BindCaseByType(1);//ALL Case
    15
    16 }
    17 else if (checkAll == "kpi")
    18 {
    19 dtCase = caseBLL.BindCaseByType(1, true);//KPI Case
    20 }
    21 else
    22 {
    23 dtCase = caseBLL.BindCaseByType(1, true);//KPI Case
    24 }
    25
    26
    27 StringBuilder sb = new StringBuilder();
    28 sb.Append("<input type='checkbox' name='All31' value='All' onclick='selectAll31()'/>ALL<br />");
    29 for (int i = 0; i < dtCase.Rows.Count; i++)
    30 {
    31 sb.Append("<input type='checkbox' name='case1' value='" + dtCase.Rows[i]["CaseName"] + "'>" + dtCase.Rows[i]["CaseName"] + "<br />");
    32 }
    33
    34 Response.Write(sb);
    35 Response.End();
    36 }

    Javascript中,data.js引用Ajax:

    View Code
    $(function() {
    $.ajax({
    type:"POST",
    url:"GetCase.aspx",
    success:function(msg){
    $("#divBoxCase").html(msg);
    }
    });


    $("#checkKpiAll").bind('click',function()
    {
    if($("#checkKpiAll").attr("checked")==true)
    {
    $.ajax({
    type: "POST",
    url: "GetCase.aspx?Flag=All",
    success: function(msg) {
    $("#divBoxCase").html(msg);
    }
    });

    }

    });


    $("#checkKPI").bind('click',function()
    {
    if($("#checkKPI").attr("checked")==true)
    {
    $.ajax({
    type: "POST",
    url: "GetCase.aspx?Flag=kpi",
    success: function(msg) {
    $("#divBoxCase").html(msg);
    }
    });

    }

    });

    $("#divBoxCase").mouseleave(function() {

    var selectRoleID = "";

    var aa=document.getElementsByName('case1');
    $("input[name='All31']").each(
    function() {
    if ($(this).attr('checked') == 'checked') {
    for(var i=0; i<aa.length; i++)
    {
    if (aa[i].type=='checkbox')
    {
    //aa[i].checked=event.srcElement.checked;
    aa[i].checked='checked';
    }
    }
    }
    }
    );

    $("input[name='case1']").each(
    function() {
    if ($(this).attr('checked') == true) {
    selectRoleID += $(this).val() + ",";
    }
    }
    );

    $("#txtCaseName").val(selectRoleID);
    $("#divBoxCase").hide(1000);

    });

    });



    //select all for case
    function selectAll31(){
    var aa = document.getElementsByName("case1");
    for (var i=0; i<aa.length; i++)
    {
    if (aa[i].type=='checkbox')
    {
    aa[i].checked=event.srcElement.checked;
    }
    }
    }
    Be the change you want to see in the world.
  • 相关阅读:
    C和C++内存模型
    makefile 学习归纳
    为知笔记给你更多
    二级指针探讨
    使用vscode书写博客
    C/C++ 笔试题一
    从一段经典错误代码说起——关于局部变量指针和函数传参的问题分析
    socket编程再分析(-)——基础
    samba服务器配置
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />详解
  • 原文地址:https://www.cnblogs.com/eva_2010/p/2311629.html
Copyright © 2020-2023  润新知