• 关于客户端改变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的开发来说,均可以先变值再更新到

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

  • 相关阅读:
    [HAOI2018]苹果树
    [TJOI2013]拯救小矮人
    [SDOI2016]硬币游戏
    一辈子都学不会的有上下界的网络流
    [AHOI2014/JSOI2014]支线剧情
    [JSOI2009]球队收益
    hdu-1856 More is better---带权并查集
    hdu-1325 Is It A Tree?---并查集
    hdu-1272 小希的迷宫---并查集或者DFS
    hdu1213-How Many Tables---基础并查集
  • 原文地址:https://www.cnblogs.com/BeanHsiang/p/459495.html
Copyright © 2020-2023  润新知