Why does ddl 'onchange' event not appear in intellisense?

寵の児 提交于 2020-01-17 05:30:07

问题


I was working out a problem with a ddl trying to get a message box to popup when the item changed. You can read about that here >>> How to Popup Alert() from asp:DropDownList OnSelectedIndexChanged?

The working answer shows me to use the onchange event but then I'm working in VS2010 this event does not appear in the intellisense dropdown. However if I type it in anyway it works fine.


回答1:


For this, you need to understand how the thing works....when you change the value of a input element, onchange event gets triggered on the browser, so the browser looks for a way to handle it. So when you put the onchange event specified for the element it gets called.

Now, ASP.NET OnSelectedIndexChanged uses the same functionality(logically saying) to POST the page to the server. From there, the ASP.NET runtime triggers the function you wrote in the codebehind file and returns you the result. Now, if you really don't require any operation that can only happen on the server, you don't need to use the server functionality, instead you can do it in javascript.

On the other hand, if you want something that happens on server: like some database get, you are supposed to use the OnSelectedIndexChanged event.

And if you use the OnSelectedIndexChanged event, you can still call some javascript functions from there.

Page.ClientScript.RegisterClientScriptBlock(typeof(string),"myScript","alert('HI')",true);

To answer your question about intellisense, onchange is a event of input types, and in aspx pages, i guess you are using <asp:..> tags, which does not have the same event - thus visual studio does not show it in the intellisense. But when you put it, it gets assigned to the HTML markups, which is interpreted correctly by the browser.

PROS and CONS

onchange works on your browser, so it is lot faster than the server-side code. On the other hand, we had an issue once that the browsers has the capability to restrict pop-ups. So if you want some really important message to be shown, it is better to use the Server-Side event and the RegisterClientScriptBlock function.

Hope it helps.



来源:https://stackoverflow.com/questions/36789899/why-does-ddl-onchange-event-not-appear-in-intellisense

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!