首页 > 开发 > 综合 > 正文

关于使用&#106avascript改变诸如ListBox控件的各个Item的值及顺序后怎么获取改变

2024-07-21 02:15:54
字体:
来源:转载
供稿:网友
方法:
 每当改变顺序或者改变值后都将当前listbox的所有item,通过for()循环将值保存在hidden标签中,这个hidden标签只能是html控件(记住:不能使用服务器控件textbox,


 因为把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收集整理,欢迎访问。
  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表