程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> XmlHttp對象實現二級聯動無刷新

XmlHttp對象實現二級聯動無刷新

編輯:.NET實例教程



<%...@ Page Language="C#" MasterPageFile="~/Member/MasterPage.master" AutoEventWireup="true" CodeFile="ProductMana.ASPx.cs" Inherits="Member_ProductMana" Title="ChinaPackNet - Product Manage" %>
<ASP:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> 
<script type="text/Javascript">...
function XMLPost2(obj)
...{
    var requestUrl = "?parentid=" + obj.value;
    var reval = "";
    var xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
    XMLHttp.open("POST", requestUrl, false);
    XMLHttp.send("");
    reval = XMLHttp.responseText;
      
    if(reval != "")
    ...{
        document.getElementById("ctl00_ContentPlaceHolder1_lbCCategory").length=0;
        var piArray = reval.split(",");
        for(var i=0;i<piArray.length;i++)

     ...{
            var ary1 = piArray[i].toString().split("|");
            document.getElementById("ctl00_ContentPlaceHolder1_lbCCategory").options.add(new Option(ary1[1].toString(),ary1[0].toString()));
        }
    }
    else
    ...{
        document.getElementById("ctl00_ContentPlaceHolder1_lbCCategory").length=0;
    }
}
</script>

    &nbsp;
    <asp:ListBox ID="lbFCategory" runat="server" Rows="10"></ASP:ListBox>
    <asp:ListBox ID="lbCCategory" runat="server" Rows="10"></ASP:ListBox>
</ASP:Content>

其中:lbCCategory的客戶端ID是通過浏覽頁面查看源文件找出來的
可以通過ClIEntScriptManager對象在CS代碼中注冊客戶端代碼獲取控件在客戶端的ID

做浏覽器兼容的話修改JS
var XMLHttp;
if(navigator.userAgent.indexOf("MSIE")>0)
{
        xmlHttp = new ActiveXObject("MSXML2.XMLHTTP"); 

else
{
        xmlHttp = new XMLHttpRequest();
}

 



using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using   System.XML;   
using   System.Text;

public partial class Member_ProductMana : System.Web.UI.Page
...{
    protected override void OnLoadComplete(EventArgs e)
    ...{
        base.OnLoadComplete(e);
        if (!this.IsPostBack)
        ...{
            this.BindFCategory();
            this.lbFCategory.Attributes.Add("onchange", "XMLPost2(this);");
        }
        if (ParentID != "")
        ...{
            this.BindCCategory(ParentID);
        }
    }

    private void BindFCategory()
 ...{
        DataSet ds = DataAccess.SQLServerDAL.GetList.GetCategory();
        ds.Tables[0].DefaultVIEw.RowFilter = "ParentID = 0 ";
        this.lbFCategory.DataSource = ds.Tables[0].DefaultVIEw;
        this.lbFCategory.DataTextFIEld = "CategoryName";
        this.lbFCategory.DataValueFIEld = "CategoryID";
        this.lbFCategory.DataBind();
        ds.Dispose();
    }

    private string ParentID
    ...{
        get
        ...{
            if (ViewState["parentid"] != null && VIEwState["parentid"].ToString() != "")
            ...{
                return VIEwState["parentid"].ToString();
            }
            else
        ...{
                if (Request["parentid"] != null && Request["parentid"].ToString() != "")
                ...{
                    return Request["parentid"];
                }
                else
                ...{
                    return "";
                }
            }
        }
        set
        ...{
            VIEwState["parentid"] = value;
        }
    }

    private void BindCCategory(string id)
    ...{
        string mystr = "";
        DataSet ds = DataAccess.SQLServerDAL.GetList.GetCategoryList(100, 1, "ParentID = " + ParentID); 

        if (ds.Tables[0].Rows.Count != 0)
        ...{
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            ...{
                mystr += "," + ds.Tables[0].Rows[i]["CategoryID"].ToString() + "|" + ds.Tables[0].Rows[i]["CategoryName"].ToString();
            }
            mystr = mystr.Substring(1);
        }
        this.Response.Write(mystr);
        this.Response.End();
        ds.Dispose();
    }
} DataAccess.SQLServerDAL.GetList.GetCategory()方法獲取分類表中的所有數據
DataSet ds = DataAccess.SQLServerDAL.GetList.GetCategoryList()方法分頁獲取數據帶where條件語句
---本例中最多只讀取100個子分類

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved