因为在项目的发票管理中,用户要求在弹出的对话框(网页)中选择单位后,返回原来页面,并且将单位值填充进来!
实际上 单位的 选择涉及三个部分:
2、textbox保存单位名称
3、img单击弹出对话框
本例中代码涉及比较多,所以只贴出相关代码:
该页面中,js selectCompany和相关函数
在该页的cs文件中:
引用了AjaxPro.dll
在被打开的对话框中(openwindow中)
在向父窗体中赋值以后,就可以调用父页中的函数ReRender(); 来重新绘制Selector下拉列表;
本例中调用了 ajaxpro但是具体的配置很简单,关键是要了解 ajaxpro在js和c#类型 type之间如何调用的关系:
比如我要是想连续初始化多个数据部分,比如说:重新绘制两个Select控件(dropdownlist在客户端的控件)
我就可以返回一个dataset
然后在 callback(res)函数中
可以这样得到 DataTable在js中的对象
var ds = res.value; var tbl = ds.Tables[0];
然后再调用 就可以了!
但是,注意的是在ds中添加数据表 DataTable的时候,可能会遇到DataTable已经被另一个DataSet包含的错误;
我的服务端c#代码是这么写的:
其实Ajaxpro在使用的时候可以根据服务端返回的对象灵活使用,具体的问题下面会描述:
Ajaxpro的效率就是很大的问题;
我曾经在一个AjaxPro的CallBack函数后面紧跟了另一个Ajaxpro的js请求函数;
结果发现没有响应,怎么调试都不行;后来发现在那个请求结束时,添加 alert("!!")提示框就可以了?(到现在无解)
但是,即使那个请求的CallBack函数有响应,却发生了新的问题;
发现第一个CallBack成功执行;
第二个CallBack执行填充的下拉菜单,Asp.NET不能识别填充的 options
Html里面明明是有options;但是就是在服务端的 XXX . SelectedValue="" 取不到值;
最后没有办法了,将两级关系统统放到服务端,然后返回一个DataSet(这个东西就像一个包,什么都可以往里面放)
在客户端读取的代码:(只有部分)
代码很乱,就提到这里了吧!
留个问题给大家:ajaxpro怎么应用web窗体下的变量(this.Somevariable)?