遇到个不是很好描述的问题,只说下现象,有遇到过的帮忙分析下可能是什么原因呢?谢谢

srz007 2006-11-23 05:15:46
我做了一个ascx控件,里边放了一个dropdownlist,并写好了SelectedIndexChanged事件处理,把这个控件单独拖到一个aspx页中事件都能响应,但下面这种情况却不正常,现象就是在通过选择不同选项时,只有选择不是第一项(也就是index!=0)的时候才能触发事件处理,选择第一项就无法触发,直接postback回本页了,甚是郁闷,哪位朋友遇到过麻烦帮解决下,谢谢啦!
下面大概说下具体的文件关系,可能描述的不大清楚....
我通过 aspx页(里边是空的) 加载 一个自定义控件(继承自WebControl),然后该自定义控件动态 加载一个ascx文件,在这个ascx文件中加入了我开始说的那个包含dropdownlist的ascx控件,就出现了上面的现象,求高手解答!
...全文
305 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
nyzfl 2006-11-24
  • 打赏
  • 举报
回复
你加一项叫"请选择",然后用户就会去选,就会触发selectindexchanged
kui1015 2006-11-24
  • 打赏
  • 举报
回复
文本显示的项,在ddl的ITEM中再写一个.
hy_lihuan 2006-11-24
  • 打赏
  • 举报
回复
感觉是刷新的问题,使你的selectIndex始终保持在0上面,手动加一个选项到第一项看看
srz007 2006-11-24
  • 打赏
  • 举报
回复
自己up
srz007 2006-11-24
  • 打赏
  • 举报
回复
找到问题了
我有2个用户控件,比如
A:本身带事件处理的那个
B:被加载到自定义控件中的那个,相当于容器
我在B的顶部写了<%@ Control Language="C#" EnableViewState="False" %>,然后在页面中调用A,就会出现A的第一项无法选择的问题,但是选择其它项都正常
如果去掉控件B的EnableViewState="False",也就是打开B的页面状态,则可以正常触发A中的所有项的事件,具体是因为什么还是想不通,求高人指点,100分全部送上!
windykuang 2006-11-23
  • 打赏
  • 举报
回复
没遇到过,顶一把~~~~
srz007 2006-11-23
  • 打赏
  • 举报
回复
to tianzhenjing(宁静夏天)
多谢回复,不过你这里
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList1.SelectedIndex = DropDownList1.SelectedIndex;
}
没必要,因为DropDownList会自动保存当前选择的选项的
还有你说没问题是你的代码直接这样运行没问题吧?如果按我开始说的那样一顿"折腾",就会出现我说的那个问题了.....
tianzhenjing 2006-11-23
  • 打赏
  • 举报
回复
我测试了一下,下面是我用的代码,一点问题也没有

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" Width="173px">
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
</asp:DropDownList>


protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DropDownList1.SelectedIndex = 2;
}
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList1.SelectedIndex = DropDownList1.SelectedIndex;
}
srz007 2006-11-23
  • 打赏
  • 举报
回复
感谢大家的关注
这个控件首先保证是可以正常postback并且可以触发事件的,前提是要把这个控件单独放在一个aspx文件中,而通过我后面说的方法加载这个控件就无法通过选择第一项来触发了

to cpp2017(幕白兄)
初始化时我的index已经设置成别的了,比如
if(!IsPostBack)
{
ddlJump.SelectedIndex = 2;//实际是通过url参数读取的
}
然后在页面中选择第一项时就无法触发事件
tianzhenjing 2006-11-23
  • 打赏
  • 举报
回复
SelectedIndexChanged
看看上面事件的含义,只有选择的项变了才激发事件,如果默认项是第一项,你再怎么点第一项也是不激发这个事件的,除非你改变了默认的选项
cpp2017 2006-11-23
  • 打赏
  • 举报
回复
现在的问题不是不提交,是只有选择了第一项才不触发事件,选别的项都正常触发


=========

初始化的时候你把selectindex改为其他的,然后再先第一项看提不提交.
tianzhenjing 2006-11-23
  • 打赏
  • 举报
回复
dropdownlist在!Page.IsPostBack中绑定

SelectedIndexChanged 事件中重新设定dropdownlist的SelectedIndex为选定的项


scow 2006-11-23
  • 打赏
  • 举报
回复
究竟是dropdownlist无法引起页面postback, 还是不执行SelectedIndexChanged.
放个按钮在页面上, 点击按钮让页面postback, 看SelectedIndexChanged事件有没有执行.
wuxing2006 2006-11-23
  • 打赏
  • 举报
回复
你先点第二项 再点第一项 不触发 ??
srz007 2006-11-23
  • 打赏
  • 举报
回复
to cpp2017(幕白兄)
在Page_load中有给这个dropdownlist初始化index,并且这个控件单独放在一个aspx中是可以正常选择index=0时触发事件的

to xiahouwen(武眉博<活靶子.NET>)
现在的问题不是不提交,是只有选择了第一项才不触发事件,选别的项都正常触发
ashen219 2006-11-23
  • 打赏
  • 举报
回复
我也看得不是很明白.
活靶子哥哥 2006-11-23
  • 打赏
  • 举报
回复
如果你要他 点了就 postback
那么 就自己在脚本 onchange 内调用__doPostBack
cpp2017 2006-11-23
  • 打赏
  • 举报
回复
SelectedIndexChanged 因为你的 index没有改变,所以不会触发这个事件.

原来就是0,然后还选0,变算post回去也没有意义啊
  • 打赏
  • 举报
回复
顶帖才是硬道理

62,074

社区成员

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

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

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

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