日期:2014-05-20  浏览次数:20379 次

关于listbox的回发问题
<table   cellSpacing= "0 "   cellPadding= "0 "   width= "100% "   border= "0 ">
<tr   height= "25 "> <td> 主管领导: <asp:dropdownlist   id= "lsdPID "   Runat= "server "   AutoPostBack= "True "> </asp:dropdownlist> </td>
<td   colSpan= "2 "> </td>
</tr>
<tr>
<td   width= "35% "> <asp:listbox   id= "lbxCID "   Width= "98% "   Runat= "server "   SelectionMode= "Multiple "   Height= "90 "> </asp:listbox> &nbsp;&nbsp; </td>
<td   noWrap   width= "1% "> <input   class= "btn_Xp_Bg "   onmouseover= "this.className= 'btn_Xp_Bg_Over ' "   onclick= "add() "
onmouseout= "this.className= 'btn_Xp_Bg ' "   type= "button "   value= "添加 "   name= "btnAdd ">
<br>
<br>
<input   class= "btn_Xp_Bg "   onmouseover= "this.className= 'btn_Xp_Bg_Over ' "   onclick= "del() "
onmouseout= "this.className= 'btn_Xp_Bg ' "   type= "button "   value= "删除 "   name= "btnDel ">
</td>
<td> &nbsp;&nbsp; <asp:listbox   id= "lbx "   Width= "200 "   Runat= "server "   SelectionMode= "Multiple "   Height= "90 "   EnableViewState=True> </asp:listbox> </td>
</tr>
</table>

初始目的:通过选择主管领导(lsdPID)调出单位(lbxCID),然后添加单位(lbx),lsdPID选项改变时lbxCID也跟着改变,但保持lbx内容不变,然后将lbx的内容提交数据库。
问题:在lsdPID回发时,lbx会被清空,请问为什么?

------解决方案--------------------
当然会被清空。又不是服务端的进行更改值。现在你的操作只是客户端的对listbox进行更改。
最简单的办法。是当添加的时候。用一个隐藏域记录另一个listbox的值。操作完毕竟后

Request[ "隐藏域 "]。不然一回发。会将隐藏域的值也清空。
------解决方案--------------------
呵呵。虽说listbox是服务端控件。但也是模拟html控件.客户端操作时候不通过服务端并不会记录状态的。状态为空。一回发也就还是为空。
------解决方案--------------------
在前台做的,后台是得不到选项的,如果取值可用 Request.Form[ "名称 "]得到. 如果要保存选项,要用一个hidden把所有选项的值保存起来,然后在后台用AddItem来添加.