我是新手,刚刚学习。net ,之前做的一个程序中有一个js前台调用后台的部分,不明白为什么js执行的结果都是一样的,还是只执行了一次,或是其他?效果是类似智能提示的东西(控件本身自带有相同的功能,只是自己想重写一个。)
前台: function SchoolsChange() { var a="55"; a=" <%=SchoolsChange()%>"; alert(a); } <dx:ASPxComboBox ID="cmbSchools" runat="server" ClientIDMode="AutoID" CssFilePath="~/App_Themes/Aqua/{0}/styles.css" CssPostfix="Aqua" onkeyup="SchoolsChange()" LoadingPanelImagePosition="Top" ShowShadow="False" SpriteCssFilePath="~/App_Themes/Aqua/{0}/sprite.css" DropDownStyle="DropDown" OnTextChanged="cmbSchools_TextChanged" AutoPostBack="True" IncrementalFilteringMode="Contains">
后台:
protected string SchoolsChange( ) { DataView dv = new DataView(); dv = schoolsDT.DefaultView; string SelectK = " sch_name like '%" + this.cmbSchools.Text.ToString().Trim() + "%' "; dv.RowFilter = SelectK; //DataRow[] rows = schoolsDT.Select(SelectK); //DataTable dt = dv.ToTable(); DataTable dtn = dv.ToTable(); this.cmbSchools.Items.Clear(); this.cmbSchools.DataSource = dtn; this.cmbSchools.TextField = "sch_name"; this.cmbSchools.ValueField = "school_id"; this.cmbSchools.DataBind(); return SelectK + "::::6666666::::" + schoolsDT.Rows.Count; }
js 中的SchoolsChange()方法在什么情况下调用? 如果没有则只会在页面第一次加载时会调用,之后因为没有事件触发来调用这个方法所以只调用了一次
onkeyup="SchoolsChange()" ,有调用,但是显示的结果都是一样的,第一次初始化的时候的值
@liujun4755:
你要取的值是用js 取的还是通过<%#SchoolsChange()%>这样到后台中去取值的,另外如果<%#SchoolsChange()%>这种方式后台可以取到改变的值吗?应该是不可以的,需要提交表单。你验证一下~
@Zery: a=" <%=SchoolsChange()%>用这种方式调用,然后用后台取值,但是我不想页面刷新,只是更改一个combox的数据源
@liujun4755: 还有一种可行的方法就是用异步去处理,只是每次触发事件都会发一个异步请求。与文本框自动补全的功能是一样的
其实a=" <%=SchoolsChange()%>";这样写的话编译到HTML里面就是a='xxx' 下次调用JS不会调用后台代码的 不信你打个断点试试
的确是的,那应该怎样调用可以做到实时的,前台调用后台?
在你的js方法 function SchoolsChange() 中生成一个 request 去服务器请求资源。
请一定要记住,你的 js 是运行在客户端的。
还是用Ajax去后台执行吧~
js是没办法直接与后台交互的,用Ajax请求吧
html已经被发送到客户端,连接断开,如何怎么调用呢?用ajax在发一次请求吧。