使用Jquery解决Asp.Net中下拉列表值改变后访问服务器刷新界面。
使用DropDownList控件时,改变选项时,获取服务端数据库数据并刷新界面数据。
1. 绑定DropDownList控件SelectedIndexChanged事件。
2. AutoPortBack属性改为True。
.Net程序员大多都会这么做,我开始也是,但是每次刷新整个界面就坑了,它把下拉列表也刷新了,每次下拉列表刷新后重新加载会再次触发SelectedIndexChanged事件,于是数据怎么选都会被改回来,刷新界面用户体验也不好。于是自己整理了一套ajax+asmx解决方案。下面将介绍ajax与asmx使用。代码中用到的数据类型就不写出来了,代码不难,看看就能自己写了。
Jquery代码:
<script>
$(document).ready(function () {
$.ajax({
type: 'post',
url: '../WebSerice/StatisticsServices.asmx/BindDropDownListVersions',
async: true,
data: {},
success: function (result) {
var versions = $(result).find('string').text().split('|');
$.each(versions, function (i, item) {
$(".versionsSelectList").append("<option value='Value'>" + versions[i] + "</option>");
});
},
error: function () {
alert('ERROR!');
}
}); });
function BindSelectedControler() {
var ver = $(".versionsSelectList option:selected").text();
$.ajax({
type: 'post',
url: '../WebSerice/StatisticsServices.asmx/GetVersionsInfoStatistics',
async: true,
data: { "versions": ver },
success: function (result) {
var info = $(result).find('string').text().split('~');
var control = $("#statisticstable tbody");
control.empty();
$.each(info, function (i, item) {
control.append("<tr>");
var info = item.split('|');
$.each(info, function (v, temp) {
control.append("<td>" + temp + "</td>");
});
control.append("</tr>");
});
},
error: function () {
alert('ERROR!');
}
});
}
</script>
script中有两个ajax:
第一个是页面初始化时加载数据到下拉列表中。
第二个方法中的ajax是当下拉列表值改变时触发,需要绑定<select>标签的onchange事件。
页面部分代码:
<h3>统计</h3><span>注册码版本:</span>
<select class="versionsSelectList" onchange="BindSelectedControler()"></select>
<table class="table table-bordered" id="statisticstable">
<thead>
<tr>
<th>版本</th>
<th>所有</th>
<th>已注册</th>
<th>未注册</th>
<th>已到期</th>
</tr>
</thead>
<tbody></tbody>
</table>
我们使用Asp.Net中的.asmx服务。
服务端代码:
[WebMethod]
public string BindDropDownListVersions()
{
string result = "";
for (int i = ; i < _select.StatisticsList.Count; i++)
{
result += _select.StatisticsList[i].VersionsInfo.RegVersions;
if (i != _select.StatisticsList.Count - ) result += "|";
}
return result;
}
[WebMethod]
public string GetVersionsInfoStatistics(string versions)
{
string result = "";
List<StatisticsInfo> verinfolist = GetListStatisticsInfo(versions); int i = ;
foreach (StatisticsInfo item in verinfolist)
{
i++;
result += item.AuthorityInfo.AuthorityName + "|";
result += item.MacRegCode.ToString() + "|";
result += item.Registered.ToString() + "|";
result += item.UnRegistered.ToString() + "|";
result += item.EndTimeReg.ToString() ;
if (i != verinfolist.Count)
result += "~";
}
return result;
}
第一个是无参方法,ajax中直接方法名即可访问。
第二个方法带一个参数,该参数要与ajax中data传参名称一致。
服务类要注意二点不然报错。
- [WebMethod]不能省略。
- 访问修饰符不要写成private。
使用Jquery解决Asp.Net中下拉列表值改变后访问服务器刷新界面。的更多相关文章
- 解决ASP.NET中的各种乱码问题
解决ASP.NET中的各种乱码问题 阅读目录 开始 页面显示乱码问题 AJAX提交的数据乱码问题 JavaScript中正确的URL编码方式 ASP.NET中正确的URL编码方式 正确的URL编码方式 ...
- 取得<asp:TextBox中的值:
取得<asp:TextBox中的值: var a= document.getElementById("<%= (ID名).ClientID %>").valu ...
- 解决ASP.NET中Redis 每小时6000次访问请求的问题
原文:解决ASP.NET中Redis 每小时6000次访问请求的问题 虽然ServiceStack v4是商业支持的产品,但我们也允许免费使用小型项目和评估目的.上面的NuGet包中包含可以使用许可证 ...
- 解决java web中safari浏览器下载后文件中文乱码问题
解决java web中safari浏览器下载后文件中文乱码问题 String fileName = "测试文件.doc"; String userAgent = request.g ...
- 面试官:如果 http 响应头中 ETag 值改变了,是否意味着文件内容一定已经更改
本篇文章由我的 一日一题 中的四个 Issue 组合而成 [Q111]http 响应头中的 ETag 值是如何生成的 [Q112]如果 http 响应头中 ETag 值改变了,是否意味着文件内容一定已 ...
- jquery获取input输入框中的值
如何用javascript获取input输入框中的值,js/jq通过name.id.class获取input输入框中的value 先准备一段 HTML <input type="tex ...
- js与jquery获取input输入框中的值
如何用javascript获取input输入框中的值,js/jq通过name.id.class获取input输入框中的value 先准备一段 HTML 一.jquery获取input文本框中的值 通过 ...
- JS中取得<asp:TextBox中的值
var s = document.getElementById("<%=txt_DaShen.ClientID %>").value; 注:txt_DaShen 为as ...
- 正确处理WPF中Slider值改变事件的方式
最近在用WPF数据绑定重写一下播放器项目时遇到的关于Slider的问题,在窗体透明度调节和播放进度调节上用了Slider控件.调节窗体透明度我是 这么想的:将窗体的Opacity属性的值与Slider ...
随机推荐
- HttpHelper工具类
/// <summary> /// 类说明:HttpHelper类,用来实现Http访问,Post或者Get方式的,直接访问,带Cookie的,带证书的等方式,可以设置代理 /// 重要提 ...
- Linux_ERROR 1045 (28000): Access denied for user 'root'@'localhost'
MySQL生成了root用户的随机密码(如下截图所示),并将这个随机密码放置在/root/.mysql_secret中.并且强制在第一次登陆时修改root用户的密码.Mysql 5.6及以后版本出处于 ...
- MSP430单片机的中断
这篇文章是从网上转载过来的,原文章地址:http://www.21ic.com/jichuzhishi/mcu/questions/2012-12-21/154794.html 中断是MSP430微处 ...
- CentOS安装Nginx,并配置nodejs反向代理
安装介绍 安装位置:/usr/local/nginx nginx安装包下载地址:http://nginx.org/download/nginx-1.7.11.tar.gz 安装依赖软件 安装nginx ...
- Android上传文件之FTP
android客户端实现FTP文件(包括图片)上传应该没什么难度.写下来就了为了记录一下,望能帮到新手. 需要用到 commons-net-3.0.1.jar,后面附上jar包. 直接上代码: /** ...
- Ubuntu下Qt-4.7.1的静态编译
最近在学习Qt的静态编译,相比较来说windows的Qt静态编译比较容易,相反对于linux编译网上的文章实践下来都有这样那样的错误,这里简要小结一下自己的编译成果. 一.实验环境 1.Ubuntu ...
- BZOJ2659: [Beijing wc2012]算不出的算式
2659: [Beijing wc2012]算不出的算式 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 668 Solved: 366[Submit] ...
- [LeetCode] 200. Number of Islands 解题思路
Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surro ...
- 警告: 隐式声明与内建函数‘exit’不兼容 [默认启用]
警告: 隐式声明与内建函数‘exit’不兼容 [默认启用] 最近在学习linux下的多任务编程,用到exit等函数时,经常出现该警告,查找资料后发现,原因其实很简单,没有把stdlib.h头文件包含进 ...
- (转)OpenSSL命令---pkcs12
用途: pkcs12文件工具,能生成和分析pkcs12文件.PKCS#12文件可以被用于多个项目,例如包含Netscape. MSIE 和 MS Outlook. 用法: openssl pkcs12 ...