CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

ListBox,在客户端赋值,如何在服务器端把其取出?

楼主michaeljjf(老蒋)2006-03-04 11:52:08 在 .NET技术 / C# 提问

用的ListBox是html控件,然后把它转为服务器端控件,在客户端和服务器端都可以访问.  
  现在遇到一问题,在客户端对ListBox所做的修改,服务器端取不出其修改的值,反应不出来.  
  请问有哪位高手遇到过,先谢了.  
  <%@   Page   language="c#"   ContentType="text/html"       Codebehind="WebForm1.aspx.cs"   AutoEventWireup="false"   Inherits="WebApplication3.WebForm1"   %>  
  <!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.0   Transitional//EN"   >  
  <HTML>  
  <HEAD>  
  <title>WebForm1</title>  
  <meta   content="Microsoft   Visual   Studio   .NET   7.1"   name="GENERATOR">  
  <meta   content="C#"   name="CODE_LANGUAGE">  
  <meta   content="JavaScript"   name="vs_defaultClientScript">  
  <meta   content="http://schemas.microsoft.com/intellisense/ie5"   name="vs_targetSchema">  
  <script>  
  function   setslt()  
  {  
  var   Ls   =   document.getElementById("LsbSlt");  
  var   Ld   =   document.getElementById("LsbData");  
  var   c   =   Ls.selectedIndex;  
  var   l   =   Ld.length;  
  var   k   =   Ls.options[c];  
  var   isbs   =   true;  
  if   (c>=0)  
  {  
  for(i=0;i<=l-1;i++)  
  {  
  if(Ld.options[i].value!=k.value)    
  isbs=true;  
  else  
  {  
  isbs=false;  
  break;  
  }  
  }  
  }  
  if   (isbs)  
  {  
  var   text     =   k.text;  
  var   opt=new   Option(text,k.value)  
  Ld.options[l]=opt;  
  }  
  else  
  {  
  alert("已经选择不需要再选择");  
  }  
   
  }  
  function   delslt()  
  {  
  var   Ld   =   document.getElementById("LsbData");  
  var   c   =   Ld.selectedIndex;  
  if   (c>=0)  
  {  
  Ld.remove(c);  
  }  
  }  
  function   saveclose()  
  {  
  var   Ld   =   document.getElementById("LsbData");  
  var   name="";  
  var   code="";  
  var   text;  
  var   ktext;  
  var   ldText;  
  var   ldValue;  
  for(i=0;i<=Ld.length-1;i++)  
  {  
  name+=Ld.options[i].text+",";  
  code+=Ld.options[i].value+",";  
  }  
   
  ldText =   name;  
  ldValue =   code;  
  alert(ldText);  
  alert(ldValue);  
   
  JumpWin(ldText,ldValue);  
  }  
  function   JumpWin(val,val2)  
  {  
  var   val3   ="Dept_Name="+   val+"&Dept_ID="+val2;  
  alert(val3);  
  window.location.href="WebForm1.aspx?"+val3;  
  }  
  </script>  
  </HEAD>  
  <body   MS_POSITIONING="GridLayout">  
  <form   id="Form1"   method="post"   runat="server">  
  <FONT   face="宋体">  
  <SELECT   id="LsbSlt"   ondblclick="setslt();"   style="Z-INDEX:   101;   LEFT:   317px;   WIDTH:   198px;   POSITION:   absolute;   TOP:   63px;   HEIGHT:   235px"   size="14"   name="Select2"   runat="server">  
  </SELECT>  
  <INPUT   id="btnRomeveAll"   style="Z-INDEX:   109;   LEFT:   240px;   WIDTH:   63px;   POSITION:   absolute;   TOP:   175px;   HEIGHT:   24px"   type="button"   value=">>">  
  <INPUT   id="btnAddAll"   style="Z-INDEX:   108;   LEFT:   239px;   WIDTH:   63px;   POSITION:   absolute;   TOP:   229px;   HEIGHT:   24px"   type="button"   value="<<">  
  <asp:Button   id="Button1"   style="Z-INDEX:   107;   LEFT:   242px;   POSITION:   absolute;   TOP:   378px"   runat="server"   Text="Button"></asp:Button><INPUT   id="btnSave"   style="Z-INDEX:   106;   LEFT:   209px;   WIDTH:   123px;   POSITION:   absolute;   TOP:   328px;   HEIGHT:   24px"   onclick="saveclose();"   type="button"   value="保存(客户端取值)">  
  <INPUT   style="Z-INDEX:   105;   LEFT:   30px;   POSITION:   absolute;   TOP:   74px"   type="button"   value="Button">  
  <INPUT   id="btnDel"   style="Z-INDEX:   104;   LEFT:   241px;   WIDTH:   63px;   POSITION:   absolute;   TOP:   125px;   HEIGHT:   24px"   onclick="setslt();"   type="button"   value="<"><INPUT   id="btnSlt"   style="Z-INDEX:   103;   LEFT:   241px;   WIDTH:   63px;   POSITION:   absolute;   TOP:   83px;   HEIGHT:   24px"   onclick="delslt();"   type="button"   value=">"><SELECT   id="LsbData"   ondblclick="delslt();"   style="Z-INDEX:   102;   LEFT:   22px;   WIDTH:   198px;   POSITION:   absolute;   TOP:   66px;   HEIGHT:   234px"   size="14"   name="Select1"   runat="server"></SELECT></FONT>  
  </form>  
  </body>  
  </HTML>  
   
   
  服务器端代码:  
  using   System;  
  using   System.Collections;  
  using   System.ComponentModel;  
  using   System.Data;  
  using   System.Drawing;  
  using   System.Web;  
  using   System.Web.SessionState;  
  using   System.Web.UI;  
  using   System.Web.UI.WebControls;  
  using   System.Web.UI.HtmlControls;  
  using   System.Data.SqlClient;  
   
  namespace   WebApplication3  
  {  
  ///   <summary>  
  ///   WebForm1   的摘要说明。  
  ///   </summary>  
  public   class   WebForm1   :   System.Web.UI.Page  
  {  
  protected   System.Web.UI.HtmlControls.HtmlSelect   LsbData;  
  protected   System.Web.UI.WebControls.Button   Button1;  
  protected   System.Web.UI.HtmlControls.HtmlSelect   LsbSlt;  
   
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
   
   
  if(this.Request["Dept_Name"]!=null)  
  {  
  string   Dept_Name   =   this.Request["Dept_Name"];  
  string   Dept_ID   =   this.Request["Dept_ID"];  
  this.Response.Write(Dept_Name+"\t"+Dept_ID);  
  }  
   
   
  SqlConnection   con   =   new   SqlConnection("server=.;uid=sa;pwd=sa;database=pass");  
  SqlCommand   cmd   =   new   SqlCommand("select   *   from   pass_login",con);  
  cmd.Connection.Open();  
  SqlDataReader   sdr   =   cmd.ExecuteReader();  
  this.LsbSlt.DataSource   =   sdr;  
  this.LsbSlt.DataTextField   =   "Pass_Name";  
  this.LsbSlt.DataValueField   =   "PK_ID";  
  this.DataBind();  
   
  //   在此处放置用户代码以初始化页面  
  }  
   
  #region   Web   窗体设计器生成的代码  
  override   protected   void   OnInit(EventArgs   e)  
  {  
  //  
  //   CODEGEN:   该调用是   ASP.NET   Web   窗体设计器所必需的。  
  //  
  InitializeComponent();  
  base.OnInit(e);  
  }  
   
  ///   <summary>  
  ///   设计器支持所需的方法   -   不要使用代码编辑器修改  
  ///   此方法的内容。  
  ///   </summary>  
  private   void   InitializeComponent()  
  {          
  this.Button1.Click   +=   new   System.EventHandler(this.Button1_Click);  
  this.Load   +=   new   System.EventHandler(this.Page_Load);  
   
  }  
  #endregion  
   
  private   void   Button1_Click(object   sender,   System.EventArgs   e)  
  {  
  //此处显示Count为零,反应不出客户端的修改  
  this.Response.Write(   "<script>alert('"+this.LsbData.Items.Count.ToString()+"');</script>");  
   
   
  for(int   i=0;i<this.LsbData.Items.Count-1;i++)  
  {  
  this.Response.Write(this.LsbData.Items[i].Text+"\t"+this.LsbData.Items[i].Value);  
  }  
  }  
  }  
  }  
  问题点数:40、回复次数:3Top

1 楼michaeljjf(老蒋)回复于 2006-03-04 11:54:54 得分 0

数据库就两个字段:  
  PK_ID int 4  
  Pass_Name varchar 50 Top

2 楼sxlfybb(房客)回复于 2006-03-04 13:26:41 得分 0

把你的listbox换成服务器的listbox不就可以了吗?  
   
  实在不能换的话,那就试一下autopostback还有一个enableviewstate这两个属性.Top

3 楼michaeljjf(老蒋)回复于 2006-03-05 14:40:24 得分 0

各位,我已经有解决的办法了,ListBox有两个属性Text和Value,在客户端赋值给ListBox后,可以用两个隐藏的客户端控件Hidden(作为服务器端控件使用,这样服务器端取Hidden的值就可以了.)当ListBox的值被修改后,同时把ListBox的Text和Value值赋给两个Hidden.服务器端要用的话取Hidden   的值就行了.  
   
  (因为用服务器端控件存在一个问题,每操作一次都会提交,页面会闪动,所以才改用客户端来实现,就遇到了这个问题.)  
   
  客户端赋值:  
  var   Ld   =   document.getElementById("LsbData");  
  var   name="";  
  var   code="";  
  var   text;  
  var   ktext;  
  var   ldText;  
  var   ldValue;  
  for(i=0;i<=Ld.length-1;i++)  
  {  
  name+=Ld.options[i].text+",";  
  code+=Ld.options[i].value+",";  
  }  
   
  ldText =   name;  
  ldValue =   code;  
  var   HidT   =   document.getElementById("HidText");  
  var   HidV   =   document.getElementById("HidValue");  
  HidT.value   =   ldText;  
  HidV.value   =   ldValue;  
   
  服务器端取值:  
  string   Dept_Name   =   this.HidText.Value;  
  string   Dept_ID   =   this.HidValue.Value;  
  只要对取出的值稍作处理就可以了.  
   
  希望对你有用. Top

相关问题

  • 后台赋值给服务器文本控件怎么赋值
  • 服务器控件 客户端可以给它赋值吗?
  • 关于listbox的赋值(初级)
  • 在 repeater里给 服务器leble赋值 为什么会出现 指定的转换无效。
  • 用一个服务器BUTTON,能取出<span id=a>的值吗???这个span不是服务器控件
  • 如何把客户端的文件数据读取出来写入服务器
  • =========== 如何取出 SQL Server 服务器里 所有的数据库名 ? =============
  • 菜鸟问题:为何把记录集赋值在ArrayList里,无法取出?
  • 如何取出CString中的数值,再赋值给int型变量
  • 在 repeater里给 服务器控件leble赋值 为什么会出现 指定的转换无效。高分求助!!

关键词

得分解答快速导航

  • 帖主:michaeljjf

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo