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

控件

方法:
 每当改变顺序或者改变值后都将当前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;
 }

时间: 2024-09-20 00:13:00

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

vb.net的ListBox控件

ListBox(列表框)控件可以显示一组项目的列表,用户可以根据需要从中选择一个或多个选项.列表框可以为用户提供所有选项的列表.虽然也可设置列表框为多列列表的形式,但在缺省时列表框单列垂直显示所有的选项,如果项目数目超过了列表框可显示的数目,控件上将自动出现滚动条.这时用户可在列表中上.下.左.右滚动.ListBox控件在工具箱中的图标如图所示: 1.click和Double-click事件 对于列表框的事件,特别是当列表框参与触发应用程序的某一部分功能时,可以添加一个Button控件,并把该按

ListBox控件添加数据慢

问题描述 winform开发,用listbox控件添加4000多条数据时,加载界面速度比较慢,要一次性加载,如何解决?目前是用for循环一条条添加,如:for(inti=0;i<4000;i++){ListBox1.Items.Add(XX);} 解决方案 本帖最后由 sven168 于 2015-09-05 20:27:43 编辑解决方案二:是否可以考虑通过线程加载listbox,这样不会导致主画面卡解决方案三:用virtualmodehttp://www.cnblogs.com/hcfala

为.net中的ListBox控件添加双击事件

控件 我在用dotnet做一个项目的过程中,遇到了一个ListBox的问题:通过在一个ListBox中双击,把选中的项添加到另一个ListBox中,但ListBox控件本身并没有该事件,那么如何实现呢?我就想到了客户端脚本javascrit,通过查阅相关资料,终于把这个问题解决了,现在写出来与大家分享,希望能对大家有所帮助.        这里有三个问题:        第一:双击所要执行的javascript代码是什么?                    注意:javascript代码的语

一起学Windows Phone7开发(十三.八 ListBox控件)

在Phone7中去掉了listview控件,就只有这个listbox控件,不过这个控件功能非常强大,完全可以实现listview的功能. 因为这个控件也相当于一个容器,可以通过ListItem来组合多个控件而得到不同功能的list. Xaml: <ListBox Grid.Row="1" Height="567" HorizontalAlignment="Left" Margin="12,53,0,0" Name=&qu

解决WinForm下ListBox控件“设置DataSource属性后无法修改项集合”

很少写WinForm程序第一次使用ListBox控件就遇到了比较恶心的问题.因为我不想手 动绑定ListBox中的Item就使用了DataSource,但是当我进行一些添加.删除操作时就报 了这个错"设置DataSource属性后无法修改项集合".实在太恶心了,不知道 设计ListBox的人是怎么想的给了DataSource属性却不能随便更改,而我要实现在一个 ListBox中选中几项然后放到另一个ListBox中的功能,不能用DataSource的话太麻烦了. 上博客园查了下没有找到

向listbox控件里添加字符时,listbox已有的字符会闪烁。

问题描述 用C#的listbox控件,显示串口收到的数据,收到一个包就显示为一行,包的大小不超过10个字节.串口接收放在0.1秒定时器里,读到完整的包后,就送到listbox里去显示.(现在下位机1秒发一次)现在现象是:串口每收到一个包显示时,listbox里已有的数据就会闪一次.如果在界面上用按键测试,每按一次按键就在listbox里添加一行数据,这样操作不会导致listbox闪烁.各位帮忙分析分析,这是什么原因呀? 解决方案 解决方案二:你是每次添加一行呢,还是从头到尾添加一遍呢解决方案三:

mfc-怎样在MFC的listbox控件中显示数据库的表

问题描述 怎样在MFC的listbox控件中显示数据库的表 在listbox控件中显示数据库中已经存在的表,代码该怎么写,初学菜鸟请教各位~(≧▽≦)/~啦啦啦 解决方案 参考:http://download.csdn.net/detail/qkill/5867135 解决方案二: 这个问题应该分为两部分来分析(1)是读取数据库(2)将读取到的数据显示在 List 中不知道你是哪部分不清楚?显示数据在 List 很简单的,调用 List 的 Insert 成员就可以完成数据增加到 List 中.

c# 4 0-关于C#窗体大小改变出现的控件位置问题

问题描述 关于C#窗体大小改变出现的控件位置问题 我创建了一个MDI窗体,现在有一个子窗体,每次当我点击开子窗体时,子窗体都是最大化显示,但是如果我的主窗体的大小小于子窗体大小时,子窗体的一些控件就会被遮掩住,虽然我设置了各个控件的Anchor属性,但是显示的效果不太理想,能不能当我的父窗体大小比子窗体大小小的时候,出现滚动条,这样也不会影响到界面控件的位置,但希望我的子窗体永远是最大化的.有没有方法解决这一问题,大神求帮助 解决方案 可以不要用MDI窗体,而直接将子窗体装入Panel或者Pic

为什么ocx控件的部分属性的值不能改变?

问题描述 如题:为什么ocx控件的部分属性的值不能改变?有一个ocx控件有很多的属性,其中有几个属性的初始值=0,我想改变这些属性的值,在初始时,给这些属性赋值,可是不成功,结果还是原来的值,怎么回事?该控件在我机器上另一个系统中用没有这个问题,请问是我哪里的环境出了问题?还是别的原因?折磨了我一天了.跪求高人!!在线等!!!! 解决方案 解决方案二:自己顶以下,求各位了.解决方案三:在程序中用代码修改可以吗?解决方案四:是用代码修改啊,就是不生效!解决方案五:谁能帮帮我啊!!!!解决方案六:没