ListBox,在客户端赋值,如何在服务器端把其取出?
用的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赋值 为什么会出现 指定的转换无效。高分求助!!




