使用Jquery解决Asp.Net中下拉列表值改变后访问服务器刷新界面。

时间:2022-09-02 13:08:42

使用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传参名称一致。

服务类要注意二点不然报错。

  1. [WebMethod]不能省略。
  2. 访问修饰符不要写成private。

使用Jquery解决Asp.Net中下拉列表值改变后访问服务器刷新界面。的更多相关文章

  1. 解决ASP&period;NET中的各种乱码问题

    解决ASP.NET中的各种乱码问题 阅读目录 开始 页面显示乱码问题 AJAX提交的数据乱码问题 JavaScript中正确的URL编码方式 ASP.NET中正确的URL编码方式 正确的URL编码方式 ...

  2. 取得&lt&semi;asp&colon;TextBox中的值:

     取得<asp:TextBox中的值:  var a= document.getElementById("<%= (ID名).ClientID %>").valu ...

  3. 解决ASP&period;NET中Redis 每小时6000次访问请求的问题

    原文:解决ASP.NET中Redis 每小时6000次访问请求的问题 虽然ServiceStack v4是商业支持的产品,但我们也允许免费使用小型项目和评估目的.上面的NuGet包中包含可以使用许可证 ...

  4. 解决java web中safari浏览器下载后文件中文乱码问题

    解决java web中safari浏览器下载后文件中文乱码问题 String fileName = "测试文件.doc"; String userAgent = request.g ...

  5. 面试官:如果 http 响应头中 ETag 值改变了,是否意味着文件内容一定已经更改

    本篇文章由我的 一日一题 中的四个 Issue 组合而成 [Q111]http 响应头中的 ETag 值是如何生成的 [Q112]如果 http 响应头中 ETag 值改变了,是否意味着文件内容一定已 ...

  6. jquery获取input输入框中的值

    如何用javascript获取input输入框中的值,js/jq通过name.id.class获取input输入框中的value 先准备一段 HTML <input type="tex ...

  7. js与jquery获取input输入框中的值

    如何用javascript获取input输入框中的值,js/jq通过name.id.class获取input输入框中的value 先准备一段 HTML 一.jquery获取input文本框中的值 通过 ...

  8. JS中取得&lt&semi;asp&colon;TextBox中的值

    var s = document.getElementById("<%=txt_DaShen.ClientID %>").value; 注:txt_DaShen 为as ...

  9. 正确处理WPF中Slider值改变事件的方式

    最近在用WPF数据绑定重写一下播放器项目时遇到的关于Slider的问题,在窗体透明度调节和播放进度调节上用了Slider控件.调节窗体透明度我是 这么想的:将窗体的Opacity属性的值与Slider ...

随机推荐

  1. ecshop 更新首页flash样式

    未测试 ECSHOP默认的只有几种很普通的FLASH图片切换样式,想不想自己也换一种呢? 今天摸索了下,算是弄懂了,和大家分享下 首先在网上找到你想要的FLASH切换样式[google一下],把那个S ...

  2. C&plus;&plus;将string转化成字符串数组

    //str为需要截断的string,pattern为分隔符 std::vector<std::string> split(std::string str,std::string patte ...

  3. SSO跨域解决方案

    单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可 以将 ...

  4. Flex和Java通信报错

    1.错误描述 11-30 18:15:52 ERROR [localhost-startStop-1] org.springframework.web.servlet.FrameworkServlet ...

  5. java&colon;数据结构(二)栈的应用(进制转换全收集)

    说到进制转换,java已经封装了基本的方法,在竞赛中使用封装的方法自然能节省大量时间 另一位仁兄介绍的封装好的方法: https://blog.csdn.net/m0_37961948/article ...

  6. WebSocket异步通讯,实时返回数据

    第一种方式 // 服务端: //var listener = new HttpListener(); // listener.Prefixes.Add("http://*:8080/&quo ...

  7. MongoDB--&dollar;project和&dollar;push的区别

    正文开始前,首先需要表名几条定义: 聚合(aggregate)是基于数据处理的聚合管道,每个文档通过一个由多个阶段(stage)组成的管道,可以对每个阶段的管道进行分组.过滤等功能,然后经过一系列的处 ...

  8. 《Python》模块和包

    一.模块 1.什么是模块: 一个模块就是一个包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1.使用Python编写的代码(. ...

  9. MySQL】存储过程、游标、循环简单实例

    create procedure my_procedure() -- 创建存储过程 begin -- 开始存储过程 declare my_id varchar(32); -- 自定义变量1 decla ...

  10. cnpm安装过程中提示optional install error&colon; Package require os&lpar;darwin&rpar; not compatible with your platform&lpar;win32&rpar;解决方法

    运行cnpm install后,出现 虽然提示不适合Windows,但是问题好像是sass loader出问题的.所以只要执行下面命令即可: 方案一: cnpm rebuild node-sass # ...