NET:异步刷新,dropdownlist两级联动, Triggers

PS::我在论坛发了个求助帖子,居然没啥人回。。好纠结啊...

http://bbs.csdn.net/topics/390809330

目的:三个dropdownlist A  B   C,     要求实现  A  联动 C,   B 联动 C

涉及:ScriptManager .  UpdatePanel ,  Triggers,   AsyncPostBackTrigger

ScriptManager 对象集:启用局部呈现

<asp:ScriptManager ID="ScriptManager1" runat="server">

</asp:ScriptManager>

其中,ScriptManager包含属性EnablePartialRendering="True‘如果启用了部分呈现且完全页面更新被禁止,则为 true;否则为 false。 默认值为 true。 

在Page_Load 事件中,使用您页面中
ScriptManager 对象的RegisterAsyncPostBackControl(Control)方法。请记住页面是无状态的,因此每次创建控件时都要重新注册这些控件。

UpdatePanel

一个 UpdatePanel 控件有两个子元素。

最常见的元素是<ContentTemplate> 元素,它实质上封装的是将被update
panel 包含的内容(即我们实现局部呈现的内容)。

另一个元素是<Triggers>,用于指定页面上的控件(或您在使用的用户控件),该控件将触发<Triggers> 元素所属
UpdatePanel 的局部呈现。

Triggers

包含以下两个字节点中的每一个且数量不限:<asp:AsyncPostBackTrigger>和<asp:PostBackTrigger>。两个共有属性:ControlID 和 EventName,且可以在当前封装单元中指定任何控件。

<asp:AsyncPostBackTrigger>元素最大的用处是它可用于从封装单元中的 任何 UpdatePanel 控件的子控件指定事件,而不只是此触发器的父UpdatePanel。任何控件都可触发局部页面更新。

<asp:PostBackTrigger>元素可用于触发局部页面呈现,但要求到服务器的完整往返行程。此触发器元素也可用于在控件如无异常则正常触发局部页面呈现时(例如,当UpdatePanel 控件的 <ContentTemplate> 元素中有一个 Button 控件时),强制执行完整页面呈现。同样,PostBackTrigger 元素可指定当前封装单元中的任何UpdatePanel 控件的任何子控件。


标签


说明


<asp:AsyncPostBackTrigger>


指定一个控件和事件,将引发包含触发器引用的UpdatePanel的局部页面更新。


<asp:PostBackTrigger>


指定一个将引发完全页面更新(整个页面刷新)的控件和事件。此标记可用于在控件如无异常则正常触发局部页面呈现时强制执行完整页面呈现。

当初目标是: 两个 dropdownlist  触发  updatePanel里的list,但这两个list可能为空选项,则不触发

现在情况是,load页面,第一次点击的list选项会直接触发 updatePanel的list, 之后可以任意改变异步触发,

同时,另一个list无效  对其无反应, 执行查询或提交按钮,可以全部取到list值

也就是说 任一dropdownlist 选项可以触发,但不能同时触发

</pre>问题代码:<pre name="code" class="csharp"><asp:DropDownList ID="lstDepName" runat="server" Width="200px" AutoPostBack="true" OnSelectedIndexChanged="lstDepName_SelectedIndexChanged">
                                        </asp:DropDownList>
<asp:DropDownList ID="lstCooType" runat="server" Width="200px" AutoPostBack="true" OnSelectedIndexChanged="lstCooType_SelectedIndexChanged">
                                        </asp:DropDownList>

<asp:UpdatePanel ID="updatePanel1" runat="server" ChildrenAsTriggers="true" >
                                            <Triggers>
                                                <asp:AsyncPostBackTrigger ControlID="lstDepName" EventName="SelectedIndexChanged" />
                                                <asp:AsyncPostBackTrigger ControlID="lstCooType" EventName="SelectedIndexChanged" />
                                            </Triggers>
                                            <ContentTemplate>
                                                <asp:DropDownList ID="lstCooName" runat="server" Width="200px">
                                                </asp:DropDownList>
                                            </ContentTemplate>
                                        </asp:UpdatePanel>

解决方法:

我查了查,  triggers的 EventName="SelectedIndexChanged"

貌似只能被同一个事件触发一次,可以有多个事件触发,

但好像只能被多个同一个事件控制。。。

貌似

如果做两级联动是没有问题的, 多级就无法实现

用AJAX, 会更好实现

综上所述,问题尚未完全解决,如果您有好的解释或解决方法,请回复,谢谢

参考资料:

http://forums.asp.net/t/1015714.aspx

http://blog.csdn.net/StepSun/article/details/1428850

http://blog.csdn.net/qwlovedzm/article/details/6633965

NET:异步刷新,dropdownlist两级联动, Triggers

时间: 2024-08-14 17:52:07

NET:异步刷新,dropdownlist两级联动, Triggers的相关文章

ASP_NET实现界面无刷新的DropdownList两级联动效果

所谓DropdownList联动,也就是在选一个DropdownList的时候使另外一个DropdownList的内容更新(如选省份时显示所属城市),按常规的方法那就是在第一个DropdownList的SelectedIndexChanged事件中改变第二个DropdownList的数据源及重新绑定,但是如果这样的话在每一次的重新选择将带来一次页面的刷新,除了屏幕闪动以外,如果同页有密码框的话,内容也会清除掉.这时我们就需要无刷新实现,基本原理在选择改变时用JS向另外一个隐藏页发送请求并得到一个

AJAX控制DropDownList两级联动

$(function () { $("#CompanyID").change(function () { var uid = $(this).val(); changediv(uid); }); }); function changediv(uid) { var url = "@Url.Action("GetJsonDrop","TheOrder")"; var param = new Object(); param.id =

DropDownList绑定数据表实现两级联动示例

这篇文章主要介绍了DropDownList绑定数据表实现两级联动具体实现,需要的朋友可以参考下 场景一:平时我们在DropDownList控件下添加下拉选项时,都会使用它的Item.Add方法,直接在代码下添加.如果我们想添加或修改下拉选项,则必须去修改源代码.如果几个DropDownList控件的下拉选项相同,我们则需要重复添加好多次,后期的维护工作很不方便. 场景二:我们在12306网站买票时,肯定遇到过这么一种情景:我们需要先选定目的地的省份,选完省份后在城市选框中会自动加载该省份的城市,

DropDownList控件:两级联动--【Asp.Net】

最近学习Asp.Net,发现很多控件都很有意思,例如:Canlender,AdRotator等.以前只知道有这样的页面效果,但是对这些控件了解并不多.不怕不知道,就怕不知道. DropDownList,两级联动,做这个demo的时候,让我又爱又恨. 一开始的时候,自己就草草的建立了一个Fresh的数据库,建立了一个Student表如下图所示: 在页面上面放了两个DropDownList,两个SqlDataSource.如下图所示: 下面就需要通过SqlDataSource设置数据源,让DropD

Combobox下拉框两级联动

下拉框的两级联动是我们开发中经常遇到一种情况.比如一个学生管理系统中,根据年级.科目及姓名查询学生考试成绩,年级和科目都是硬盘中的有限数据(数据库)而学生则可以有用户手动指定,这时在数据库中有年级和科目两张表,每门科目都对应一个年级,所以我们可以用两个下拉框(Combobox)来存储年级和科目信息来供用户选择.界面如下: 这时如果我们将科目对应的下拉框直接绑定科目表时,用户选择一个年级后还要从所有科目中进行选择就会降低系统的友好性,甚至可能出现没有任何意义的查询语句.我们可以先绑定年级下拉框的数

故障管理系统--select两级联动查询

写故障管理系统时,根据主类-平台进行故障搜索,需要用到select两级联动查询 我前端技术纯菜鸟,请教了个水平高的同事才搞定,所以记录下来,以免以后再忘了 前端html <form id="tab" class="form-inline" role="form" action='/search/' method='GET' style="float:right;margin-top:-48px;margin-right:0px;&

JS练习:两级联动

代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>两级联动</title> <script> //准备数据 var provinces = [ ["深圳市", "东莞市", "惠州市", "广州市"], ["长沙市", &quo

Jquery实现两级联动

最后结果如下: 关键代码如下: <select name="customerCondition['credibilityBegin']" id="credibilityBegin" class="ui_select01" style="width:90px" onchange="changeCredibility();"> <option value="" select

JS 省市两级联动(不带地区版本)

基于网上找的一个版本改造,因为项目需求不需要地区只要省.市,所以做了改版,两个input上直接取出了数据 <html> <head> <script src="app/js/jquery-1.11.2.min.js"></script> <SCRIPT LANGUAGE="JavaScript"> var Items=new Array(); function add(id,iArray) { Items[