dropdownlist问题,请求帮助!

cnwu 2004-04-11 06:21:45
我知道我的为什么,但我就是不知道如何解决,希望那位高人指点,谢谢了!
问题是当我选择右边的那个动态生成的dropdownlist是时,不能取出其Text值,原因时刷新后重新生成了该dropdownlist的listitem。我不知道如何解决,郁闷啊!
我的代码如下:---------------------
<%@ Page debug="true" Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %>
<%@ Import NameSpace = "System" %>
<%@ Import NameSpace = "System.IO" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>院系选择</title>
<script language="C#" runat=server>
public void Page_load(object Sender, EventArgs e)
{


if(!Page.IsPostBack)
{
xike.Items.Add("01-1系");
xike.Items.Add("01-2系");
xike.Items.Add("01-3系");
xike.Items.Add("01-4系");
xike.Items.Add("01-5系");
}
}
public void SelChange(object Sender, EventArgs e)
{
switch(xueyuan.SelectedItem.Value)
{
case "01" :
xike.Items.Clear();
xike.Items.Add("01-1系");
xike.Items.Add("01-2系");
xike.Items.Add("01-3系");
xike.Items.Add("01-4系");
xike.Items.Add("01-5系");
break;
case "02" :
xike.Items.Clear();
xike.Items.Add("02-1系");
xike.Items.Add("02-2系");
xike.Items.Add("02-3系");
xike.Items.Add("02-4系");
break;
case "03" :
xike.Items.Clear();
xike.Items.Add("03-1系");
xike.Items.Add("03-2系");
xike.Items.Add("03-3系");
break;
case "04" :
xike.Items.Clear();
xike.Items.Add("04-1系");
xike.Items.Add("04-2系");
break;
case "05" :
xike.Items.Clear();
xike.Items.Add("05-1系");
xike.Items.Add("05-2系");
xike.Items.Add("05-3系");
xike.Items.Add("05-4系");
xike.Items.Add("05-5系");
break;
case "06" :
xike.Items.Clear();
xike.Items.Add("数学系");
xike.Items.Add("计算数学系");
xike.Items.Add("计算机科学系");
xike.Items.Add("信息工程系");
xike.Items.Add("金融数学系");
xike.Items.Add("计算中心");
xike.Items.Add("大学数学教研部");
break;
}

}
public void SelResult(object Sender, EventArgs e)
{
label1.Text="<font color='red' size='2'>你选择了:</font><font size='2'>" + xueyuan.SelectedItem.Text +" "+ xike.SelectedItem.Value + "</font>" ;

}


</script>
</head>
<body>
<Form runat="server">
学院:
<asp:DropDownList ID="xueyuan" runat="server" AutoPostBack="True" OnSelectedIndexChanged="SelChange" >
<asp:ListItem value="01" selected>1 文学院</asp:ListItem>
<asp:ListItem value="02">2 社发院</asp:ListItem>
<asp:ListItem value="03">3 管理院</asp:ListItem>
<asp:ListItem value="04">4 教科院</asp:ListItem>
<asp:ListItem value="05">5 外文院</asp:ListItem>
<asp:ListItem value="06">6 数科院</asp:ListItem>
</asp:DropDownList>
系科:
<asp:DropDownList id="xike" runat="server" AutoPostBack="true" />
<asp:Label id="label1" runat="server" />
</form>
</body>
</html>
---------------------------------
...全文
44 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xaodoudou 2004-04-11
  • 打赏
  • 举报
回复
我也掺和几句
this.xueyuan.SelectedIndexChanged是事件
this.xueyuan_SelectedIndexChanged()是函数
就是这那个函数去处理 xueyuan 的那个事件
cnwu 2004-04-11
  • 打赏
  • 举报
回复
说的也是,总之感谢大家!我是新手,正在学习中,孟老大的网站上有好多我应该学习的东西呢!呵呵。
morefish 2004-04-11
  • 打赏
  • 举报
回复
事件委托, .net web 应用程序用于处理事件的。先别拍马屁,net_lover(孟子E章)出的力
最多,我只是用了个简单的方法解决罢了。
cnwu 2004-04-11
  • 打赏
  • 举报
回复
【morefish(little) 】谢谢你帮我解决了上面的问题,还想请教您,为什么代码分离就可以了?
this.xueyuan.SelectedIndexChanged += new System.EventHandler(this.xueyuan_SelectedIndexChanged);
this.xike.SelectedIndexChanged += new System.EventHandler(this.xike_SelectedIndexChanged);
这两句的机制是什么?
谢谢您啊!你真棒!
morefish 2004-04-11
  • 打赏
  • 举报
回复
net_lover(孟子E章) 这样写实现上是正确的,呵呵但是为什么,在
xike ,的OnSelectedIndexChanged事件里得到xike.SelectedItem.Value
的值总是第一个值呢?
孟子E章 2004-04-11
  • 打赏
  • 举报
回复
<%@ Page debug="true" Language="C#" ContentType="text/html" EnableViewstate="true"%>

EnableViewstate="true"要启用
孟子E章 2004-04-11
  • 打赏
  • 举报
回复
演示地址
http://dotnet.aspx.cc/exam/b.aspx
孟子E章 2004-04-11
  • 打赏
  • 举报
回复
注意:要在Web.Config里设置
<globalization requestEncoding="gb2312" responseEncoding="gb2312"/>
孟子E章 2004-04-11
  • 打赏
  • 举报
回复
<%@ Page debug="true" Language="C#" ContentType="text/html" ResponseEncoding="gb2312"%>
<%@ Import NameSpace = "System" %>
<%@ Import NameSpace = "System.IO" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>院系选择</title>
<script language="C#" runat=server>
public void Page_load(object Sender, EventArgs e)
{
xike.Attributes.Add("onchange","document.all." + HiddenValue.ClientID + ".value = xike.options[xike.selectedIndex].value;");
if(!Page.IsPostBack)
{
xike.Items.Add("01-1系");
xike.Items.Add("01-2系");
xike.Items.Add("01-3系");
xike.Items.Add("01-4系");
xike.Items.Add("01-5系");
}
}
public void SelChange(object Sender, EventArgs e)
{
switch(xueyuan.SelectedItem.Value)
{
case "01" :
xike.Items.Clear();
xike.Items.Add("01-1系");
xike.Items.Add("01-2系");
xike.Items.Add("01-3系");
xike.Items.Add("01-4系");
xike.Items.Add("01-5系");
break;
case "02" :
xike.Items.Clear();
xike.Items.Add("02-1系");
xike.Items.Add("02-2系");
xike.Items.Add("02-3系");
xike.Items.Add("02-4系");
break;
case "03" :
xike.Items.Clear();
xike.Items.Add("03-1系");
xike.Items.Add("03-2系");
xike.Items.Add("03-3系");
break;
case "04" :
xike.Items.Clear();
xike.Items.Add("04-1系");
xike.Items.Add("04-2系");
break;
case "05" :
xike.Items.Clear();
xike.Items.Add("05-1系");
xike.Items.Add("05-2系");
xike.Items.Add("05-3系");
xike.Items.Add("05-4系");
xike.Items.Add("05-5系");
break;
case "06" :
xike.Items.Clear();
xike.Items.Add("数学系");
xike.Items.Add("计算数学系");
xike.Items.Add("计算机科学系");
xike.Items.Add("信息工程系");
xike.Items.Add("金融数学系");
xike.Items.Add("计算中心");
xike.Items.Add("大学数学教研部");
break;
}

}
public void SelResult(object Sender, EventArgs e)
{
label1.Text="<font color='red' size='2'>你选择了:</font><font size='2'>" + xueyuan.SelectedItem.Text +" "+ HiddenValue.Value + "</font>" ;
for (int i=0; i<xike.Items.Count; i++) {
if (xike.Items[i].Value == HiddenValue.Value)
xike.Items[i].Selected = true;
}

}

</script>
</head>
<body>
<Form runat="server">
学院:
<asp:DropDownList ID="xueyuan" runat="server" AutoPostBack="True" OnSelectedIndexChanged="SelChange" >
<asp:ListItem value="01" selected>1 文学院</asp:ListItem>
<asp:ListItem value="02">2 社发院</asp:ListItem>
<asp:ListItem value="03">3 管理院</asp:ListItem>
<asp:ListItem value="04">4 教科院</asp:ListItem>
<asp:ListItem value="05">5 外文院</asp:ListItem>
<asp:ListItem value="06">6 数科院</asp:ListItem>
</asp:DropDownList>
系科:
<asp:DropDownList id="xike" runat="server" AutoPostBack="true" OnSelectedIndexChanged="SelResult"/>
<asp:Label id="label1" runat="server" />
<input id="HiddenValue" type=hidden value="" runat=server>
</form>
</body>
</html>
morefish 2004-04-11
  • 打赏
  • 举报
回复
我早就试了啊!!
cnwu 2004-04-11
  • 打赏
  • 举报
回复
哪你有没有试过,把我的代码运行一下啊?
morefish 2004-04-11
  • 打赏
  • 举报
回复
如果你想用客户端实现这个功能可以试试用javascript.
morefish 2004-04-11
  • 打赏
  • 举报
回复
要不你用代码后置的写法一定兴,把AutoPostBack="false" 去掉。然后将
<asp:DropDownList id="xike" runat="server" />的OnSelectedIndexChanged
事件关联到 ="SelResult"。呵呵。

cs::
protected System.Web.UI.WebControls.DropDownList xueyuan;
protected System.Web.UI.WebControls.DropDownList xike;
protected System.Web.UI.WebControls.Label label1;

private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
xike.Items.Add("01-1系");
xike.Items.Add("01-2系");
xike.Items.Add("01-3系");
xike.Items.Add("01-4系");
xike.Items.Add("01-5系");
}
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.xueyuan.SelectedIndexChanged += new System.EventHandler(this.xueyuan_SelectedIndexChanged);
this.xike.SelectedIndexChanged += new System.EventHandler(this.xike_SelectedIndexChanged);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void xueyuan_SelectedIndexChanged(object sender, System.EventArgs e)
{
switch(xueyuan.SelectedItem.Value)
{
case "01" :
xike.Items.Clear();
xike.Items.Add("01-1系");
xike.Items.Add("01-2系");
xike.Items.Add("01-3系");
xike.Items.Add("01-4系");
xike.Items.Add("01-5系");
break;
case "02" :
xike.Items.Clear();
xike.Items.Add("02-1系");
xike.Items.Add("02-2系");
xike.Items.Add("02-3系");
xike.Items.Add("02-4系");
break;
case "03" :
xike.Items.Clear();
xike.Items.Add("03-1系");
xike.Items.Add("03-2系");
xike.Items.Add("03-3系");
break;
case "04" :
xike.Items.Clear();
xike.Items.Add("04-1系");
xike.Items.Add("04-2系");
break;
case "05" :
xike.Items.Clear();
xike.Items.Add("05-1系");
xike.Items.Add("05-2系");
xike.Items.Add("05-3系");
xike.Items.Add("05-4系");
xike.Items.Add("05-5系");
break;
case "06" :
xike.Items.Clear();
xike.Items.Add("数学系");
xike.Items.Add("计算数学系");
xike.Items.Add("计算机科学系");
xike.Items.Add("信息工程系");
xike.Items.Add("金融数学系");
xike.Items.Add("计算中心");
xike.Items.Add("大学数学教研部");
break;
}

}

private void xike_SelectedIndexChanged(object sender, System.EventArgs e)
{
label1.Text="<font color='red' size='2'>你选择了:</font><font size='2'>" + xueyuan.SelectedItem.Text +" "+ xike.SelectedItem.Value + "</font>" ;
}

aspx::
<%@ Page language="c#" Codebehind="WebForm2.aspx.cs" AutoEventWireup="false" Inherits="Test.WebForm2" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm2</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
学院:
<asp:DropDownList ID="xueyuan" runat="server" AutoPostBack="True" >
<asp:ListItem value="01" selected>1 文学院</asp:ListItem>
<asp:ListItem value="02">2 社发院</asp:ListItem>
<asp:ListItem value="03">3 管理院</asp:ListItem>
<asp:ListItem value="04">4 教科院</asp:ListItem>
<asp:ListItem value="05">5 外文院</asp:ListItem>
<asp:ListItem value="06">6 数科院</asp:ListItem>
</asp:DropDownList>
系科:
<asp:DropDownList id="xike" runat="server" AutoPostBack="true" />
<asp:Label id="label1" runat="server" />
</form>
</body>
</HTML>

sjzwinfor 2004-04-11
  • 打赏
  • 举报
回复
有什么错误呀
cnwu 2004-04-11
  • 打赏
  • 举报
回复
不行啊,【sjzwinfor(我喜欢c#)】 的方法有错误,net_lover(孟子E章) 的方法我早试过,但不能实现我的上面的功能啊!
孟子E章 2004-04-11
  • 打赏
  • 举报
回复
<asp:DropDownList id="xike" runat="server" AutoPostBack="false" />
sjzwinfor 2004-04-11
  • 打赏
  • 举报
回复
public void SelChange(object Sender, EventArgs e)
{
this.session["xueyuan"]=xueyuan.SelectedItem.Value;
}

public void Page_load(object Sender, EventArgs e)
{


if(!Page.IsPostBack)
{
xike.Items.Add("01-1系");
xike.Items.Add("01-2系");
xike.Items.Add("01-3系");
xike.Items.Add("01-4系");
xike.Items.Add("01-5系");
}
switch(session["xueyuan"])
{
case "01" :
xike.Items.Clear();
xike.Items.Add("01-1系");
......................
............

}

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧