另類無重新整理、聯動下拉式清單方塊(二級+XMLHttpRequest)

來源:互聯網
上載者:User
request|xml|xmlhttprequest|重新整理|無重新整理|下拉|下拉式清單

二級的聯動下拉式清單,從思路上講,大致分下列幾步:

一:觸發第一個下拉式清單的onchange事件。

二:非同步呼叫處理頁後,會返回處理請求後的資訊(伺服器端用Response.Write方法寫入要返回的字串,用戶端用responseText屬性接收字串。

三:用得到的字串處理後更新第二個下拉式清單方塊

主要代碼如下:

一:建立讀取XML的類,這裡也可以是資料庫的查詢

public class ReadXmlCS
 {
  public const string k = "|";
  public const string s = ",";
  public ReadXmlCS()
  {
   //
   // TODO: 在此處添加建構函式邏輯
   //
  }

  public static string QueryXml(string filename,string querystr)// @"//Pro_class/@id"
  {
   System.Text.StringBuilder sb = new System.Text.StringBuilder();
   System.Xml.XPath.XPathDocument myXPathDocument = new System.Xml.XPath.XPathDocument(filename);
   System.Xml.XPath.XPathNavigator myXPathNavigator = myXPathDocument.CreateNavigator();
   try
   {
    System.Xml.XPath.XPathNodeIterator myXPathNodeIterator = myXPathNavigator.Select(querystr);
    while(myXPathNodeIterator.MoveNext())
    {
     sb.Append(myXPathNodeIterator.Current.Value.ToString() +",");//把屬性值添加到字串末尾,添加分組字元“,”
     System.Xml.XPath.XPathNavigator myXPathNavigator2 = myXPathNodeIterator.Current.Clone();//複製當前接點
//     while(myXPathNavigator2.MoveToNextAttribute())//移動指標到下一個屬性
//     {
//      sb.Append(myXPathNavigator2.Value.ToString()+"|");//把屬性值添加到字串末尾,添加分組字元“|”
//     }
     myXPathNavigator2.MoveToNextAttribute();
     sb.Append(myXPathNavigator2.Value.ToString()+"|");
    
    }
    return sb.ToString();
   }
   catch{return null;}
  }

  public static void QueryXml(string filename,string querystr,System.Web.UI.WebControls.DropDownList dd)// @"//Pro_class/@id"
  {
   System.Xml.XPath.XPathDocument myXPathDocument = new System.Xml.XPath.XPathDocument(filename);
   System.Xml.XPath.XPathNavigator myXPathNavigator = myXPathDocument.CreateNavigator();
   try
   {
    System.Xml.XPath.XPathNodeIterator myXPathNodeIterator = myXPathNavigator.Select(querystr);
    while(myXPathNodeIterator.MoveNext())
    {
     System.Web.UI.WebControls.ListItem li = new System.Web.UI.WebControls.ListItem();
     li.Value = myXPathNodeIterator.Current.Value.ToString() ;//把屬性值(id)添加到ListItem的“值”屬性
     System.Xml.XPath.XPathNavigator myXPathNavigator2 = myXPathNodeIterator.Current.Clone();//複製當前接點
//     while(myXPathNavigator2.MoveToNextAttribute())//移動指標到下一個屬性
//     {
//      li.Text = myXPathNavigator2.Value.ToString();//把屬性值(title)添加到ListItem的“文本”屬性
//     }
     myXPathNavigator2.MoveToNextAttribute();
     li.Text = myXPathNavigator2.Value.ToString();
     dd.Items.Add(li);
    }
   
   }
   catch{}
  }

}

其中關鍵的步驟加了注釋,其它的大家可以到MSDN上去尋找。

 

二。實現 (WebForm8.aspx.cs頁面):

  protected System.Web.UI.WebControls.DropDownList DropDownList2;
  protected System.Web.UI.WebControls.DropDownList Dropdownlist1;

  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此處放置使用者代碼以初始化頁面
   string str = this.Request.QueryString["querychild"];
   if((str != null) && (str == "yes"))
   {
    string querystr = "//Pro_class[" + this.Request["parentid"] + "]/Pro_class_small/@id";
    string show = zlp.str.ReadXmlCS.QueryXml(@"D:\Inetpub\wwwroot\zlp\XmlData\ProductMenu.xml",querystr);
    this.Response.Write(show);
    this.Response.End();
   }

   if(!this.IsPostBack)
   {
    this.BindDropDownList();//載入頁面時,填充第一個下拉式清單方塊
   }
  }

  protected void BindDropDownList()
  {
   this.Dropdownlist1.Attributes.Add("onchange","javascript:XmlPost(this);"); //伺服器端添加屬性
   zlp.str.ReadXmlCS.QueryXml(@"D:\Inetpub\wwwroot\zlp\XmlData\ProductMenu.xml",@"//Pro_class/@id",this.Dropdownlist1);
  }

 

三:JS指令碼(WebForm8.aspx頁面)

不知道為什麼,這裡的JS指令碼添加不進來,大家可以在案例下載中得到源碼。

文章的結尾:

大家也可以把它添加到使用者控制項中或者是封裝成自訂控制項。

要是大家有更好的方法和建議,懇請通知我,歡迎指正,謝謝!

QQ:126083810

zlp8383178@163.com

案例示範:

http://j.thec.cn/zlp8383178/exmDropDownList/webform1.aspx

案例下載


 



相關關鍵詞:
相關文章

Alibaba Cloud 10 Year Anniversary

With You, We are Shaping a Digital World, 2009-2019

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。