有点郁闷,每次触发一次dropdownlist的SelectedIndexChanged的事件 页面就刷新一次,看着一点都不爽,但是不知道怎么解决,自我认为应该用javascript,可是不会写,还望各位大虾们不吝赐教
解决方案 »
- 救命! TreeView 无法选中节点!
- 页面问题
- 页面加载逻辑问题
- 关于Formview控件数据修改后控件变形的问题,在线等!!!
- 编辑webcontrol控件时的问题,郁闷!!
- 关于意外断网的问题
- 求助!怎样将GridView中的值赋给Dropdownlist作为其中的一个值
- ==============Ajax问题===========
- 帮个忙解决.net uploadify io erro问题
- 这次是Outlook Bar,也就是Outlook左面的东东。JavaScript写的。(icyer)
- ASP.NET和Dreamweaver 配合用,APS编完页面Dreamweaver 可以在上边修改么,能识别么
- 求助:TreeView做权限树取Checked=true的Node的ID,怎样用JS传值到后台?50分
dropdownlist.attribute.add("onchange","return false")当然dropdownlist类的autopostback=false也可以吧
推荐用MS的CascadingDropDown
if(!Page.IsPostBack)
{
//你的程序
}
1. 用ajax.net,加一个update panel就完了。
2. 把SelectedIndexChanged那到client写,不过看lz还不太理解web开发的机制,对你可能不太好做。
其实当你把dropdown的autopostback=ture以后你会在客户端发现
一个onchange脚本,该脚本的功能就是提交form,从而提交到服务器。
而当你把dropdown的autopostback=false那么客户端将不会生成
提交form的脚本,自然也就不提交到服务器了你现在不想刷新页面,那只能js实现。
或者是asp.net.ajax实现
将dropdown控件放入update里面就可以
//目的是去掉不必要的事件触发
dropdownlist.SelectedIndexChanged -= new System.EventHandler(bindingSource1_PositionChanged);//代码段
*************************
*************************
//代码段最后面写
//再加上的目的是 还原啊
dropdownlist.SelectedIndexChanged += new System.EventHandler(bindingSource1_PositionChanged);
<script language="javascript">
function setDDL()
{
...
}
</script>DropDownList1.Attribute.Add("onchange","return setDDL()");
using System.Reflection;private static MethodInfo triggerInitMethod =
typeof(UpdatePanelTrigger).GetMethod(
"Initialize",
BindingFlags.NonPublic | BindingFlags.Instance); protected void Page_Init(object sender,EventArgs e)
{
AsyncPostBackTrigger trigger1 = new AsyncPostBackTrigger();
trigger1.ControlID = "DropDownList1";
this.UpdatePanel1.Triggers.Add(trigger1);
if (ScriptManager.GetCurrent(this).IsInAsyncPostBack)
{
triggerInitMethod.Invoke(trigger1, null);
}
}
在页面中添加2个AJAX控件
ScriptManager 和UpdatePanel,把你要触发的事件加到UpdatePanel里面 即可
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httpHandlers>
function ChangeType(index)
{
if(index==0)
{
}
else if(index==1)
{
}
else if(index==2)
{
}
} </script>
<cc1:CustDropDownList ID="ddlInfoType" onchange="ChangeType(this.selectedIndex)"
runat="server"> </cc1:CustDropDownList>
如果不必要的话,就将autopostback设为false,否则改变选项都会回发的.
要不主放在updatepanel里.
LZ有必要把自己的需求列清楚才好!