JS ListBox动态加载数据

来源:互联网 发布:蜂窝数据不显示全部app 编辑:程序博客网 时间:2024/05/16 09:08

       因项目需要,需要从listbox取出部分信息进行加载。原理为当body初始化时将全部数据保存到一个隐藏的listbox中,通过在body指定onload执行的函数。当用户选择部门时,首先将所有的数据项清除,然后进行循环,将匹配的数据加载到listbox中,因为没有用的服务器事件,因此选择的部门名称,在源数据源中存在。不然单纯的利用js是做不到的。代码如下:

 

  1. <%@ Page language="c#" Codebehind="default.aspx.cs" AutoEventWireup="false" Inherits="FNMS.WebSite._default" validateRequest="false" %>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
  3. <HTML>
  4.     <HEAD>
  5.         <title>进行信息发布</title>
  6.         <META content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
  7.         <META content="C#" name="CODE_LANGUAGE">
  8.         <META content="JavaScript" name="vs_defaultClientScript">
  9.         <META content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
  10.         <SCRIPT language="javascript" src="../include/private.js"></SCRIPT>
  11.         <SCRIPT language="javascript" src="../include/fString.js"></SCRIPT>
  12.         <SCRIPT language="javascript">
  13.         function myInit()
  14.         {
  15.             var  alluser =document.getElementById("ListBox1");
  16.             var  save_all_user = document.getElementById("all_user_list");
  17.             var lb_count = alluser.options.length;
  18.             //将所有用户保存到一个listbox中,用途是当选者部门时,从此listbox中获取数据进行数据填充
  19.             for(var i=0;i<lb_count;i++)
  20.             {
  21.                 var v = alluser.options[i].value;
  22.                 var t = alluser.options[i].text;
  23.                 save_all_user.options[save_all_user.options.length] = new Option(t,v,true,true);
  24.             }       
  25.             
  26.         }
  27.         function ChangeDep(depname)
  28.         {
  29.             my_source_list = document.getElementById("ListBox1");
  30.             //将listbox中的所有数据清除完
  31.             my_source_list.options.length = 0
  32.             //根据部门进行循环添加数据
  33.             var save_user = document.getElementById("all_user_list");
  34.             var my_count = save_user.options.length;
  35.             for(var i=0;i<my_count;i++)
  36.             {
  37.                 var v = save_user.options[i].value;
  38.                 var t = save_user.options[i].text;
  39.                 if(depname != "")
  40.                 {
  41.                     if (t.indexOf(depname) >0)
  42.                     {
  43.                         my_source_list.options[my_source_list.options.length] = new Option(t,v,false,false);
  44.                     }
  45.                 }
  46.                 else
  47.                 {
  48.                         my_source_list.options[my_source_list.options.length] = new Option(t,v,false,false);
  49.                 }
  50.             }
  51.         }
  52.         //提交前检测数据
  53.         function checkForm()
  54.         {
  55.             try
  56.             {
  57.                 var t = document.Form1;
  58.                 var re = //s/g;
  59.                 if (t.art_title.value.replace(re,"") == "")
  60.                 {
  61.                     alert("请填写信息标题");
  62.                     t.art_title.focus();
  63.                     return false;
  64.                 }
  65.                 if (Parse(t.art_title.value))
  66.                 {
  67.                     alert("信息标题中不能包含有下列字符/n英文的单引号、双引号、<>等/n请用相应的中文符号替代");
  68.                     t.art_title.focus();
  69.                     return false;
  70.                 }
  71.                 if (t.art_title.value.length>150){
  72.                     alert("信息标题限制在150字数以内");
  73.                     t.art_title.focus();
  74.                     return false;
  75.                 }
  76.                 
  77.                 tt.art_content.value = t.doc_html.value;
  78.                 tt.art_content_text.value = t.doc_html.text;
  79.                 if (t.art_content.value == "")
  80.                 {
  81.                     alert("请填写信息内容");
  82.                     return false;
  83.                 }
  84.                 if(t.userlist.value =="")
  85.                 {
  86.                     alert("请选择回复部门");
  87.                     return false;
  88.                 }
  89.                 
  90.                 t.submit();
  91.                 
  92.             }
  93.             catch(e)
  94.             {
  95.                 alert(e);
  96.                 return false;
  97.             }
  98.         }
  99.         //改变模式
  100.         function ChangeTitleStyle()
  101.         {
  102.             Form1Form1.art_title.className=Form1.art_title_style.options[Form1.art_title_style.selectedIndex].value;
  103.         }
  104.         
  105.         //添加用户
  106.         function SelectOne()
  107.         {
  108.             
  109.             var lst1=window.document.getElementById("ListBox1");
  110.             var lstindex=lst1.selectedIndex;
  111.             if(lstindex<0)
  112.                 return;
  113.             var v = lst1.options[lstindex].value;
  114.             var t = lst1.options[lstindex].text;
  115.             //lst1.options[lstindex].parentNode.removeChild(lst1.options[lstindex]);
  116.             var lst2=window.document.getElementById("lbUserList");
  117.             //判断选中的用户数,只能为一个
  118.             if (lst2.options.length>=1)
  119.             {
  120.                 alert("回复人员只能有一个");
  121.                 return;
  122.             }
  123.             if(jsSelectIsExitItem(lst2,v))
  124.             {
  125.                 alert("回复人员:"+t+" 已经存在");
  126.             }
  127.             else
  128.             {
  129.                 lst2.options[lst2.options.length] = new Option(t,v,true,true);
  130.                 
  131.                 //保存用户名字符串到hidden中
  132.                 var user = window.document.getElementById("userlist");
  133.                 user.value += v+"|"; 
  134.             }
  135.                 
  136.         }
  137.         
  138.         //判断选项中是否存在
  139.         function jsSelectIsExitItem(objSelect,objItemValue)
  140.         {
  141.             var isExit = false;
  142.             for(var i=0;i<objSelect.options.length;i++)
  143.             {
  144.                 if(objSelect.options[i].value == objItemValue)
  145.                 {
  146.                     isExit = true;
  147.                     break;
  148.                 }
  149.             }      
  150.             return isExit;
  151.         }
  152.         
  153.         //删除用户
  154.         function DelOne()
  155.         {
  156.             var lst2=window.document.getElementById("lbUserList");
  157.             var lstindex=lst2.selectedIndex;
  158.             if(lstindex>=0)
  159.             {
  160.                 var v_rem = lst2.options[lstindex].value+"|";
  161.                 var v = lst2.options[lstindex].value;
  162.                 var t = lst2.options[lstindex].text;
  163.                 //移出用户
  164.                 lst2.options[lstindex].parentNode.removeChild(lst2.options[lstindex]);
  165.                 //将移出的用户,添加的左侧的数据中
  166.                 //var lst1=window.document.getElementById("ListBox1");
  167.                 //lst1.options[lst1.options.length] = new Option(t,v,true,true);
  168.                 
  169.                 //将hidden中保存的用户名也作移除操作
  170.                 var user = window.document.getElementById("userlist");
  171.                 useruser.value = user.value.replace(v_rem.toString(),"");
  172.             }
  173.                 
  174.         }
  175.         </SCRIPT>
  176.     </HEAD>
  177.     <BODY MS_POSITIONING="GridLayout" onload="myInit()">
  178.         <FORM id="Form1" onsubmit="return checkForm()" method="post" runat="server">
  179.             <TABLE class="clsCententTable" height="50%" cellSpacing="0" cellPadding="5" width="100%"
  180.                 border="1">
  181.                 <TR class="clsOperationHead">
  182.                     <TD colSpan="2" height="26"><B>添加新信息</B>
  183.                     </TD>
  184.                 </TR>
  185.                 <TR class="clsCell">
  186.                     <TD align="left" width="10%">信息标题</TD>
  187.                     <TD align="left" width="85%"><INPUT class="clsText" style="WIDTH: 480px; HEIGHT: 22px" type="text" maxLength="150" size="74"
  188.                             name="art_title"><FONT color="red">(*)</FONT> 
  189.                     </TD>
  190.                 </TR>
  191.                 <TR class="clsCell">
  192.                     <TD align="left" width="10%">所属栏目</TD>
  193.                     <TD align="left" width="85%">
  194.                         <asp:DropDownList id="dllClass" runat="server" Width="480px"></asp:DropDownList></TD>
  195.                 </TR>
  196.                 <TR class="clsCell">
  197.                     <TD colSpan="2">
  198.                         <OBJECT id="doc_html" style="LEFT: 0px; TOP: 0px" type="text/x-scriptlet" height="450" width="100%"
  199.                             data="../editor/editor.html" VIEWASTEXT>
  200.                         </OBJECT>
  201.                         <INPUT type="hidden" name="art_content"> <INPUT type="hidden" name="art_content_text">
  202.                     </TD>
  203.                 </TR>
  204.             </TABLE>
  205.             <TABLE width="100%">
  206.                 <TR>
  207.                     <TD colSpan="3">回复用户列表:</TD>
  208.                 </TR>
  209.                 <TR>
  210.                     <TD style="WIDTH: 236px"><FONT face="宋体">待选用户<BR>
  211.                             <asp:DropDownList  id="ddlDepart" runat="server" Width="184px"></asp:DropDownList><BR>
  212.                             <asp:ListBox id="ListBox1" runat="server" Width="184px"></asp:ListBox></FONT></TD>
  213.                     <TD style="WIDTH: 142px" align="center"><FONT face="宋体"><INPUT title="添加用户" onclick="SelectOne()" type="button" value=">>"><BR>
  214.                             <BR>
  215.                             <INPUT title="移出用户" onclick="DelOne()" type="button" value="<<"> </FONT>
  216.                     </TD>
  217.                     <TD><FONT face="宋体">选定用户<BR>
  218.                         </FONT>
  219.                         <asp:ListBox id="lbUserList" runat="server" Width="176px" Height="75px"></asp:ListBox></TD>
  220.                 </TR>
  221.                 <TR>
  222.                     <TD colSpan="3">
  223.                         <asp:Button id="btnSave" runat="server" Text="开始发布"></asp:Button></TD>
  224.                 </TR>
  225.             </TABLE>
  226.             <INPUT id="userlist" type="hidden" name="userlist">
  227.             <!--此HTML控件中保存所有的用户列表-->
  228.             <SELECT id="all_user_list" type="select-one" style="display:none;"></SELECT>
  229.         </FORM>
  230.     </BODY>
  231. </HTML>

asp.net后台服务器代码,主要是添加,当选择部门时,进行事件的响应,代码如下:

  1. private void Page_Load(object sender, System.EventArgs e)
  2.         {
  3.             //添加双击事件
  4.             this.ListBox1.Attributes.Add("onDblClick","SelectOne()");
  5.             this.lbUserList.Attributes.Add("onDblClick","DelOne()");
  6.             this.ddlDepart.Attributes.Add("onchange","ChangeDep(this.options[this.selectedIndex].value)");
  7.             // 在此处放置用户代码以初始化页面
  8.             if(!Page.IsPostBack)
  9.             {
  10.                 this.dgBind();
  11.             }
  12.             
  13.         }
原创粉丝点击