在 ASP.NET 中有一个用于 DropDownList 的 onSelectedIndexChange 事件,该事件在为下拉列表更改选定索引时触发。
我遇到了一种情况,当 DropDown 的 SelectedIndex 在选择时没有改变时,我需要触发类似的事件。
我完全不知道在这种情况下该怎么办?
任何帮助/参考将不胜感激。
谢谢你。
在 ASP.NET 中有一个用于 DropDownList 的 onSelectedIndexChange 事件,该事件在为下拉列表更改选定索引时触发。
我遇到了一种情况,当 DropDown 的 SelectedIndex 在选择时没有改变时,我需要触发类似的事件。
我完全不知道在这种情况下该怎么办?
任何帮助/参考将不胜感激。
谢谢你。
假设您的页面上有另一个导致回发的服务器端控件,您可以在回发事件中为另一个控件编写一个例程,将当前选择与前一个选择进行比较并触发自定义事件(或您想要的例程发生)如果值没有改变。
也就是说,我必须想象有一种更简单的方法可以实现您想要实现的总体目标,但您的问题必须更具体一些。
更新
我必须假设您在处理表单时正在使用下拉列表中的值。为什么不从隐藏下拉菜单和显示链接按钮开始呢?只需从下拉列表中选择一个默认值并允许用户根据需要进行更改。
这是一个显示该行为的小提琴:http: //jsfiddle.net/rjaum/
将事件处理程序分配给选定的索引更改事件并autopostback
在标记中设置为 true
或后面的代码
mydropdownlist.SelctedIndexChanged += NameOfMethod
然后像这样定义处理程序
protected void NameOfMethod(object sender, EventArgs e)
{
//your code here
}
根据定义更新selectedindexchanged
事件只会在索引更改时触发。如果你想强制回发需要一些 javascript。这是如何使用 jquery 执行此操作的示例
$(function() {
$('select').change();
});
我认为这很正常。事件是SelectedIndexChanged
,您说您选择了之前选择的相同项目。所以索引保持不变,没有改变,事件也不会触发。可能是你看 OnClick。
问题是你第二次点击的时候并没有改变索引,所以下拉菜单还在等你改
这很容易。您可以使用 javascript/jquery/服务器端代码等来实现这一点。假设用户确实单击了控件。pageLoad上的类似内容
PageLoad()
{
YourDropDownList.Attributes.Add("onclick","javascript:CallHelloWorld();return false;");
}
然后在服务器端你可以用 WebMethod 属性装饰一个方法
[WebMethod()]
public static string HelloWorld()
{
return "Hello foo";
}
在您的客户端 aspx 上,您可以使用 jQuery 调用您的 webmethod
<script language="text/javascript">
function CallHelloWorld()
{
// Call HelloWorld webmethod using jQuery $.ajax
}
</script>
编辑 您可以使用单选按钮列表而不是下拉列表。这样,在客户端,您可以在单击单选按钮时检查事件是否被选中(如果选中它会触发您的事件)。 编辑 如果您想使用下拉列表,请尝试查看此线程,每次使用 JQuery 选择下拉列表时都会触发事件