zoukankan      html  css  js  c++  java
  • 关于客户端改变ListBox的一个小问题

        DotNet开发中,ListBox是个再熟不过的控件了,不过实际操作中却有一个场景,需要细细研究一下它

    的特性.

        在Ajax大行其道的今天,如果仅仅想借助客户端脚本(主要是javascript)改变ListBox的Item,然后再

    提交到服务端处理,居然带出了一些小问题.因为服务端是通过页面viewstate里的值来跟踪包括ListBox

    这类服务器控件的值的变化的,如果在客户端使得ListBox的内容改变了,而viewstate域里的值没有变化

    的话,到了服务端仍然不能通过ListBox.SelectValue取得改变的值的.可是viewstate是加密后的字符串,

    我们无法通过代码来更改它的.

        参考了一些实例后,发现有两种途径能满足上述的需求.

        一. 通过Form[ListBox]方式来访问,假设ListBox的ID命名为lb1,那么作为表单元素的访问方法,用

    Request.Form[lb1]就能直接获取在客户端改变后,并选择中的ListBox中的值.但遗憾的是只能取到

    ListBox中item的Value,而没办法得到item的Text的值.

        二. 先斩后奏永远是王道.可以在客户端再动态添加一个<input type="hiden" runat="server">这

    样的隐藏域,将客户端改变后的ListBox所有的Item以键值对的形式放在这个隐藏域里面,提交到服务端的

    时候,把这个键值对取出来,将ListBox先clear所有的item,然后再按键值对重新添加ListBox的数据,这样

    也就是保证了客户端和服务端的同步.也不存在方法一中取不到Item的text的值的问题了.因为是先有值,

    再赋给ListBox的,这样操作虽然麻烦一些,但要灵活得多,对于喜欢JS的开发来说,均可以先变值再更新到

    服务端的,建议能尝试用这样的方法.

  • 相关阅读:
    VMware Workstation 16.0 key (仅支持 intel 架构)
    使用思科ASA对指定端口、IP进行抓包
    轮子的意义
    dubbo学习(三)泛化
    dubbo学习(二)链接
    dubbo学习(一)线程池
    mips交叉编译:SQLite3
    生成证书脚本
    ssh连接不上 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
    gmssl ocsp 验证证书
  • 原文地址:https://www.cnblogs.com/BeanHsiang/p/459495.html
Copyright © 2011-2022 走看看