请问如何实现改变dropdownlist选项,触发事件函数?(无法多次捕捉不到onSelectedIndexChanged事件?)

时间:2021-11-01 00:00:16
<asp:dropdownlist id="SelectTitle" runat="server" AutoPostBack="true"></asp:dropdownlist>

第一次改变选项能够出发onSelectedIndexChanged事件,但是以后再改变选项就没有反映了!
此外触发onSelectedIndexChanged事件后,总是调用Page_Load,如何停止调用它?

12 个解决方案

#1


are you binding your dropdownlist in

if (!IsPostBack)
{

}

>>>总是调用Page_Load,如何停止调用它?

that is how ASP.NET works, no way to stop it, move the code outside Page_Load

#2



if(!IsPostBack)
{
只想第一次调用的放在这
}
第一次改变选项能够出发onSelectedIndexChanged事件,但是以后再改变选项就没有反映了!
是不是因为你的dropdownlist绑定事件是写在Page_Load()里面?

#3


AutoPostBack="false" 就不会触发Page_Load了。
另外不要用
if(!IsPostBack)
{
}

#4


还是没有解决我的问题!
第一次改变选项能够触发onSelectedIndexChanged,但以后就不成了!调用完Page_Load就不再调用onSelectedIndexChanged

dropdownlist不是在PageLoad中绑定的!

#5


帮你顶!!!!!!!!!!
愿你成功!!!!!!!

#6


建议在asp.net中直接调用dropdownlist的onSelectedIndexChanged事件,然后将c#中的private void 改为 public void 试一试。

#7


楼上的方法也不好用!

#8


在page_load中调用你的函数就行,,

#9


楼上的方法还是没有根本解决阿!

#10


?

#11


看看WROX的asp.net入门经典就第七章就知道原因了。你的具体原因,楼上的说的都有道理,具体问题要看你的绑定代码,及涉及到的其他代码。
这也是我刚遇到的问题,放到init中就可以了(不建议)。

#12


贴主:
你要明白一个道理,就是asp:dropdownlist控件的AutoPostBack="true"属性确实可以触发表单提交。但是在后台代码里面的private void Page_Load()是只要发生表单提交就会执行里面的代码。
而AutoPostBack属性设置为true后确实可以触发nSelectedIndexChanged事件的发生,但是这个事件的触发是在执行完Page_Load后才执行。
所以Asp.Net提供了IsPostBack属性来确认这个动作是客户第一次执行还是表单提交回发.
所以我们通常用这个属性来控制哪些代码每次提交都要执行,还是仅仅第一次请求时执行一个例子
private void Page_Load(object sender,EventArgs e)
{
    // 每次提交都执行的代码
    if(!Page.IsPostBack)
    }
        // 页面第一次请求时候执行代码
    }
    if(Page.IsPostBack)
    {
        // 第一次请求不执行,表单提交执行代码
    }
}

还有就是你问题提的不清楚,大家都是靠猜测,你应该把你出错代码或者希望代码执行的顺序说出来,应该有人可以帮助你的.

#1


are you binding your dropdownlist in

if (!IsPostBack)
{

}

>>>总是调用Page_Load,如何停止调用它?

that is how ASP.NET works, no way to stop it, move the code outside Page_Load

#2



if(!IsPostBack)
{
只想第一次调用的放在这
}
第一次改变选项能够出发onSelectedIndexChanged事件,但是以后再改变选项就没有反映了!
是不是因为你的dropdownlist绑定事件是写在Page_Load()里面?

#3


AutoPostBack="false" 就不会触发Page_Load了。
另外不要用
if(!IsPostBack)
{
}

#4


还是没有解决我的问题!
第一次改变选项能够触发onSelectedIndexChanged,但以后就不成了!调用完Page_Load就不再调用onSelectedIndexChanged

dropdownlist不是在PageLoad中绑定的!

#5


帮你顶!!!!!!!!!!
愿你成功!!!!!!!

#6


建议在asp.net中直接调用dropdownlist的onSelectedIndexChanged事件,然后将c#中的private void 改为 public void 试一试。

#7


楼上的方法也不好用!

#8


在page_load中调用你的函数就行,,

#9


楼上的方法还是没有根本解决阿!

#10


?

#11


看看WROX的asp.net入门经典就第七章就知道原因了。你的具体原因,楼上的说的都有道理,具体问题要看你的绑定代码,及涉及到的其他代码。
这也是我刚遇到的问题,放到init中就可以了(不建议)。

#12


贴主:
你要明白一个道理,就是asp:dropdownlist控件的AutoPostBack="true"属性确实可以触发表单提交。但是在后台代码里面的private void Page_Load()是只要发生表单提交就会执行里面的代码。
而AutoPostBack属性设置为true后确实可以触发nSelectedIndexChanged事件的发生,但是这个事件的触发是在执行完Page_Load后才执行。
所以Asp.Net提供了IsPostBack属性来确认这个动作是客户第一次执行还是表单提交回发.
所以我们通常用这个属性来控制哪些代码每次提交都要执行,还是仅仅第一次请求时执行一个例子
private void Page_Load(object sender,EventArgs e)
{
    // 每次提交都执行的代码
    if(!Page.IsPostBack)
    }
        // 页面第一次请求时候执行代码
    }
    if(Page.IsPostBack)
    {
        // 第一次请求不执行,表单提交执行代码
    }
}

还有就是你问题提的不清楚,大家都是靠猜测,你应该把你出错代码或者希望代码执行的顺序说出来,应该有人可以帮助你的.