關于使用&#106avascript改變諸如ListBox控件的各個Item的值及順序后怎么獲取改變
2024-07-21 02:15:54
供稿:網友
 
方法:
 每當改變順序或者改變值后都將當前listbox的所有item,通過for()循環將值保存在hidden標簽中,這個hidden標簽只能是html控件(記?。翰荒苁褂梅掌骺丶extbox, 
 因為把visible設置為false后,頁面上就不會有這個元素了,而javascript也會因為沒有對應的元素而出錯),最后回送到服務器時通過一個分解函數分解出正確的順序和值
 。
 具體:
 腳本
 <script language="javascript">
 <!--
 function remembernow()
    {
  //記錄當前的選擇項,將當前列表中的值及順序保存在hidden中
  //lstresult是服務器控件listbox 
  //txtselecteditems是<input type=hidden>
   var count;
          var str="";
          count=form1.lstresult.options.length;
          for(var i=0;i<count;i++)
          {
    str+=form1.lstresult.options[i].value + "," + form1.lstresult.options[i].text + ";";
          }
          form1.txtselecteditems.value=str;//例如:1,冷俠;2,輕輕飛舞;
    }
 //-->
 </script>
 服務器端代碼:
 private void page_load(object sender, system.eventargs e)
 {
  try
  {
   //將修改后的順序及值填充到目標listbox
   //parseit函數用于分解出正確的值及順序
   lstresult.datasource=parseit(txtselecteditems.value);
   lstresult.datavaluefield="id";
   lstresult.datatextfield="name";
   lstresult.databind();
  }
  catch(exception ex)
  {
   response.write(ex.message);
  }
 }
 private icollection parseit(string str)
 {
  datatable dtl=new datatable();
  dtl.columns.add(new datacolumn("id"));
  dtl.columns.add(new datacolumn("name"));
  int i=0;
  int j;
  while((j=str.indexof(";",i))>=0)
  {
   string tmp;
   tmp=str.substring(i,j-i);
   string parsenumber,parsename="";
   parsenumber=tmp.substring(0,tmp.indexof(","));
   parsename=tmp.substring(tmp.indexof(",")+1,tmp.length-tmp.indexof(",")-1);
   try
   {
    datarow dr=dtl.newrow();
    dr["id"]=convert.toint32(parsenumber);
    dr["name"]=parsename;
    dtl.rows.add(dr);
   }
   catch
   {}
   i=j+1;
  }
  dtl.acceptchanges();
         return dtl.defaultview;
 }
本文來源于網頁設計愛好者web開發社區http://www.html.org.cn收集整理,歡迎訪問。