100分求一个难度一般的问题,dropdownlist里的项目又重复加的问题!解决立即结帖 附上参考图:选择后变成这个样啦: http://www.stQQ.net/test.gif 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 private void Page_Load(object sender, System.EventArgs e){if(!Page.PostBack){shootselect.Items.Clear();//清空con.open1();sql="select shoot,shootid from [shoot] order by ID asc";cmd1=new SqlCommand(sql,con.link1);read1=cmd1.ExecuteReader(); if(read1.HasRows){ while(read1.Read()) { ListItem item = new ListItem(read1.GetValue(0).ToString(),read1.GetValue(1).ToString()); shootselect.Items.Add(item); } }else{ ListItem item = new ListItem("警告:请先增加摄影器材!","0"); shootselect.Items.Add(item);}read1.Close();con.link1.Close(); }private void shootselect_SelectedIndexChanged_1(object sender, System.EventArgs e) { Response.Write("选中摄影器材的ID值是"+shootselect.SelectedValue.ToString()); con.open2(); sql="select model,modelid from [model] where shootid="+shootselect.SelectedValue.ToString()+" order by ID asc"; cmd2=new SqlCommand(sql,con.link2); read2=cmd2.ExecuteReader(); if(read2.HasRows) { modelselect.Items.Clear(); while(read2.Read()) { ListItem item = new ListItem(read2.GetValue(0).ToString(),read2.GetValue(1).ToString()); modelselect.Items.Add(item); } } else { ListItem item = new ListItem("警告:请先增加摄影器材的型号!","0"); modelselect.Items.Add(item); } read2.Close(); con.link2.Close();} } 只是修改了Page_Load().在里面加入判断if(!Page.PostBack) shootselect.Items.Clear(); 将你的代码放在 private void Page_Load(object sender, System.EventArgs e) { if(!IsPostBack) {//你的代码 放在这里面!} } agree following:shootselect.Items.Clear(); 因为你没有清空吧,在重新绑定时,如让面孟子E章所说,要清空一下再绑定。在你将要循环添加的前面加一句:DropDownlist.Items.Clear();即可 private void shootselect_SelectedIndexChanged_1(object sender, System.EventArgs e) { DropDownlist.Items.Clear();} 倒~问题解决了,清空我也尝试过,但就是没加IsPostBack 我还是不理解if(!IsPostBack)的含义,菜鸟问题,大家能不能解释一下呀~~ 为什么加多一个(!IsPostBack)判断就不会了呀,如何正确运用IsPostBack呀,在什么情况下才要加呢? 很明显的,你将在每次第一个Dropdownlist提交的时候,都会往里面添加一次重复的记录;所以参照hertcloud(重载∮DOTNET Joyes.com)的做法,是正确的。如果每次都Items.Clear的话将造成资源的浪费 if(!IsPostBack)的含义代表该页面是否为第一次请求;eg,你第一次请求一个页面那么对这个页面的请求为Get,那么接下来的你点击按钮或者下拉框产生提交的那么请求动词就为Post,那么这个时候因为你已经对该页面请求过一次了服务端看到的就是你客户端Post-Back回来的东西了。 Dropdownlist是服务端控件,他会提交请求,使得页面刷新的。但此时,显然你不想那段“向Dropdownlist添加项目”代码再执行一次,所以要加以判断;最好是看看自己的帮助。 这是什么错误,怎么回事? 一个急手的验证问题。 求助断点调试!!!急 repeater中的button事情 detailsview控件问题. 关于导出到Excel文件,请高手赐教 如何在页面继承原有控件? 如何取得本站点的ASP程序的运行结果,然后在ASP.NET程序中进行处理? 在页面上执行存储过程超时问题,谢谢 如何把一张数据表导出成Word文档 这个vb.net的函数涌c#怎么写.我是个新手.莫怪 datagrid不触发编辑、修改、删除事件
{
if(!Page.PostBack)
{
shootselect.Items.Clear();//清空
con.open1();
sql="select shoot,shootid from [shoot] order by ID asc";
cmd1=new SqlCommand(sql,con.link1);
read1=cmd1.ExecuteReader();
if(read1.HasRows)
{
while(read1.Read())
{
ListItem item = new ListItem(read1.GetValue(0).ToString(),read1.GetValue(1).ToString());
shootselect.Items.Add(item);
}
}
else
{
ListItem item = new ListItem("警告:请先增加摄影器材!","0");
shootselect.Items.Add(item);
}
read1.Close();
con.link1.Close();
}private void shootselect_SelectedIndexChanged_1(object sender, System.EventArgs e)
{ Response.Write("选中摄影器材的ID值是"+shootselect.SelectedValue.ToString());
con.open2();
sql="select model,modelid from [model] where shootid="+shootselect.SelectedValue.ToString()+" order by ID asc";
cmd2=new SqlCommand(sql,con.link2);
read2=cmd2.ExecuteReader(); if(read2.HasRows)
{ modelselect.Items.Clear();
while(read2.Read())
{
ListItem item = new ListItem(read2.GetValue(0).ToString(),read2.GetValue(1).ToString());
modelselect.Items.Add(item);
}
}
else
{
ListItem item = new ListItem("警告:请先增加摄影器材的型号!","0");
modelselect.Items.Add(item);
}
read2.Close();
con.link2.Close();
}
}
在里面加入判断if(!Page.PostBack)
shootselect.Items.Clear();
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{//你的代码 放在这里面!} }
shootselect.Items.Clear();
在你将要循环添加的前面加一句:DropDownlist.Items.Clear();即可
{
DropDownlist.Items.Clear();
}
所以参照
hertcloud(重载∮DOTNET Joyes.com)的做法,是正确的。如果每次都Items.Clear的话将造成资源的浪费
eg,
你第一次请求一个页面那么对这个页面的请求为Get,那么接下来的你点击按钮或者下拉框产生提交的那么请求动词就为Post,那么这个时候因为你已经对该页面请求过一次了服务端看到的就是你客户端Post-Back回来的东西了。
但此时,显然你不想那段“向Dropdownlist添加项目”代码再执行一次,所以要加以判断;
最好是看看自己的帮助。