请问怎样避免这种情况发生? if (!this.IsPostBack){ 增加} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Jouzen()说的对,讲解:if(!IsPostBack){}中的语句仅仅在你第一次装载该页面时执行,否则你每次刷新页面都要执行PageLoad()中的语句。 protected void Page_Load() {if (!this.IsPostBack){ aa.Items.Add("abc"); aa.Items.Add("def");}因为每次页面载入会自动执行Page_Load。所以如果不进行判断,每次都会自动执行Page_Load中的语句。 if (!this.IspostBack){protected void Page_Load() {aa.Items.Add("abc");aa.Items.Add("def");}你这个只要在第一次加载页面时加入就可以了, 谢谢各位大侠,我按照你们的方法,成功了,其实我是想把数据库的内容输入dropdownlist的,例如如下,运行后确实没有重复增加的现象了,例如数据库输入dropdownlist的是abc,def,hij吧,但我不论选abc,def,还是hij,dropdownlist里都是显示abc的,Message.InnerHtml 也老是显示abc,如果是用上面的输入方法就没这个问题,请问怎么办?请再帮我一下,谢谢!<%@ Import Namespace="System.Data" %><%@ Import Namespace="System.Data.SqlClient" %><html><script language="C#" runat="server">protected void Page_Load() { if (!this.IsPostBack){SqlConnection myConnection = new SqlConnection("server=(local)\\NetSDK;database=test;Trusted_Connection=yes"); SqlDataAdapter myCommand = new SqlDataAdapter("select * from list", myConnection); DataSet ds = new DataSet(); myCommand.Fill(ds, "list");int number= ds.Tables["list"].Rows.Count;aa.Items.Clear();for (int i=0; i<number; i++){ aa.Items.Add(ds.Tables["list"].Rows[i]["aa"].ToString().Trim()); } } }protected void look(Object sender, EventArgs e){Message.InnerHtml =aa.SelectedItem.Value.ToString(); }</script><body><form method=post runat=server><center> <asp:dropdownlist id="aa" runat=server OnSelectedIndexChanged="look" AutoPostBack="true"> <asp:listitem></asp:listitem> </asp:dropdownlist> </center><div id="Message" style="font: 10.5pt 宋体;padding:0,15,15,15" runat="server"/></form></body></html> 把<asp:dropdownlist id="aa" runat=server OnSelectedIndexChanged="look" AutoPostBack="true">改为<asp:dropdownlist id="aa" runat=server OnSelectedIndexChanged="look" AutoPostBack="false"> dragontt(龙人):我这个dropdownlist的反应还牵连另外一个dropdownlist的,我上面的只是简化的例子,有别的方法吗? 是选择了之后又变成默认的选项了吗?你的EnableViewState属性设定是什么?@ Page中的和asp:dropdownlist中的都设为true试试如果,还是有问题的话应该是你在其他的地方,对这个dropdownlist进行了重新选择最好把代码贴出来 真的是这样的,例如把数据库部分:SqlConnection myConnection = new SqlConnection("server=(local)\\NetSDK;database=test;Trusted_Connection=yes"); SqlDataAdapter myCommand = new SqlDataAdapter("select * from list", myConnection); DataSet ds = new DataSet(); myCommand.Fill(ds, "list");int number= ds.Tables["list"].Rows.Count;aa.Items.Clear();for (int i=0; i<number; i++){ aa.Items.Add(ds.Tables["list"].Rows[i]["aa"].ToString().Trim()); }改成以下就可以运行正常,很奇怪的,我把xp也重装了.string kk="ee";aa.Items.Clear();for (int i=0; i<4; i++){ kk=kk+"w";aa.Items.Add(kk); } 的确是有够奇怪你把int number= ds.Tables["list"].Rows.Count;aa.Items.Clear();for (int i=0; i<number; i++){ aa.Items.Add(ds.Tables["list"].Rows[i]["aa"].ToString().Trim());改为aa.DataSource = ds.Tables["list"].DefaultView;aa.DataTextField = "aa";aa.DataBind();试试 dragontt(龙人):我试过了你,不行,原来我的数据表装的是中文dropdownlist,我把它们改成英文后,就可以正常运行了,看来还是数据表格里的中文造成的,我装的是中文xp,中文sql,怎么办? 我还把以下的改成中文,也出现这种问题:string kk="ee";aa.Items.Clear();for (int i=0; i<4; i++){ kk=kk+"w";aa.Items.Add(kk); }改成:string kk="我";aa.Items.Clear();for (int i=0; i<4; i++){ kk=kk+"你";aa.Items.Add(kk); }把更改的部分代替数据库的部分,也出现这个问题,你可以在你那边试一下吗? 就是dropdownlist的内容是英文,就可以正常,如果是中文,就只能老是显示第一个,看来这与我的environment设置有关,怎么办? 你看一下你的Web.config文件中<globalization requestEncoding="utf-8" responseEncoding="utf-8"/>设定的值是什么 果然是web.config的问题,真要命啊,这问题烦了我两天了.谢谢你,dragontt(龙人),谢谢各位:))) 求一个avi格式的视频播放源码 asp.net中的啊? 基础问题,谢谢 response.write引起的css丢失求解 关于取得gridview选中行隐藏列的值 这种方式调用WORD是调用了服务器端的还是客户端的? 怎样应用OracleParameter怎样写in查询语句? 关于Datagrid绑定后判断数据的问题。 HyperLink控件一问 简单的问题(新手) 如果在面页的Page_Load里某个过程只想在第一次打开页面的时候执行怎么办? DataGrid分页的问题!谢谢 请把下面vb代码转换成C#!!!
if(!IsPostBack){}中的语句仅仅在你第一次装载该页面时执行,否则你每次刷新页面都要执行PageLoad()中的语句。
if (!this.IsPostBack)
{
aa.Items.Add("abc");
aa.Items.Add("def");
}
因为每次页面载入会自动执行Page_Load。所以如果不进行判断,每次都会自动执行Page_Load中的语句。
{
protected void Page_Load() {
aa.Items.Add("abc");
aa.Items.Add("def");
}
你这个只要在第一次加载页面时加入就可以了,
<%@ Import Namespace="System.Data.SqlClient" %>
<html><script language="C#" runat="server">protected void Page_Load() {
if (!this.IsPostBack)
{
SqlConnection myConnection = new SqlConnection("server=(local)\\NetSDK;database=test;Trusted_Connection=yes"); SqlDataAdapter myCommand = new SqlDataAdapter("select * from list", myConnection); DataSet ds = new DataSet();
myCommand.Fill(ds, "list");int number= ds.Tables["list"].Rows.Count;
aa.Items.Clear();
for (int i=0; i<number; i++){
aa.Items.Add(ds.Tables["list"].Rows[i]["aa"].ToString().Trim()); } } }protected void look(Object sender, EventArgs e)
{Message.InnerHtml =aa.SelectedItem.Value.ToString(); }
</script>
<body>
<form method=post runat=server><center>
<asp:dropdownlist id="aa" runat=server OnSelectedIndexChanged="look" AutoPostBack="true"> <asp:listitem></asp:listitem>
</asp:dropdownlist>
</center>
<div id="Message" style="font: 10.5pt 宋体;padding:0,15,15,15" runat="server"/>
</form>
</body>
</html>
<asp:dropdownlist id="aa" runat=server OnSelectedIndexChanged="look" AutoPostBack="true">
改为
<asp:dropdownlist id="aa" runat=server OnSelectedIndexChanged="look" AutoPostBack="false">
我这个dropdownlist的反应还牵连另外一个dropdownlist的,我上面的只是简化的例子,有别的方法吗?
又变成默认的选项了吗?你的EnableViewState属性设定是什么?
@ Page中的
和asp:dropdownlist
中的
都设为true试试如果,还是有问题的话
应该是你在其他的地方,对这个dropdownlist进行了重新
选择
最好把代码贴出来
myCommand.Fill(ds, "list");int number= ds.Tables["list"].Rows.Count;
aa.Items.Clear();
for (int i=0; i<number; i++){
aa.Items.Add(ds.Tables["list"].Rows[i]["aa"].ToString().Trim()); }改成以下就可以运行正常,很奇怪的,我把xp也重装了.string kk="ee";
aa.Items.Clear();
for (int i=0; i<4; i++){
kk=kk+"w";
aa.Items.Add(kk); }
你把
int number= ds.Tables["list"].Rows.Count;
aa.Items.Clear();
for (int i=0; i<number; i++){
aa.Items.Add(ds.Tables["list"].Rows[i]["aa"].ToString().Trim());
改为
aa.DataSource = ds.Tables["list"].DefaultView;
aa.DataTextField = "aa";
aa.DataBind();试试
我试过了你,不行,原来我的数据表装的是中文dropdownlist,我把它们改成英文后,就可以正常运行了,看来还是数据表格里的中文造成的,我装的是中文xp,中文sql,怎么办?
aa.Items.Clear();
for (int i=0; i<4; i++){
kk=kk+"w";
aa.Items.Add(kk); }改成:
string kk="我";
aa.Items.Clear();
for (int i=0; i<4; i++){
kk=kk+"你";
aa.Items.Add(kk); }把更改的部分代替数据库的部分,也出现这个问题,你可以在你那边试一下吗?
你的Web.config文件中
<globalization requestEncoding="utf-8" responseEncoding="utf-8"/>
设定的值是什么