0

在 ASP.NET 中有一个用于 DropDownList 的 onSelectedIndexChange 事件,该事件在为下拉列表更改选定索引时触发。

我遇到了一种情况,当 DropDown 的 SelectedIndex 在选择时没有改变时,我需要触发类似的事件。

我完全不知道在这种情况下该怎么办?

任何帮助/参考将不胜感激。

谢谢你。

4

4 回答 4

0

假设您的页面上有另一个导致回发的服务器端控件,您可以在回发事件中为另一个控件编写一个例程,将当前选择与前一个选择进行比较并触发自定义事件(或您想要的例程发生)如果值没有改变。

也就是说,我必须想象有一种更简单的方法可以实现您想要实现的总体目标,但您的问题必须更具体一些。

更新

我必须假设您在处理表单时正在使用下拉列表中的值。为什么不从隐藏下拉菜单和显示链接按钮开始呢?只需从下拉列表中选择一个默认值并允许用户根据需要进行更改。

这是一个显示该行为的小提琴:http: //jsfiddle.net/rjaum/

于 2012-10-01T10:33:04.767 回答
0

将事件处理程序分配给选定的索引更改事件并autopostback在标记中设置为 true

或后面的代码

mydropdownlist.SelctedIndexChanged += NameOfMethod

然后像这样定义处理程序

protected void NameOfMethod(object sender, EventArgs e)
{
     //your code here
}

根据定义更新selectedindexchanged事件只会在索引更改时触发。如果你想强制回发需要一些 javascript。这是如何使用 jquery 执行此操作的示例

$(function() {
    $('select').change();
});
于 2012-10-01T10:25:44.607 回答
0

我认为这很正常。事件是SelectedIndexChanged,您说您选择了之前选择的相同项目。所以索引保持不变,没有改变,事件也不会触发。可能是你看 OnClick。

问题是你第二次点击的时候并没有改变索引,所以下拉菜单还在等你改

于 2012-10-01T10:34:32.440 回答
0

这很容易。您可以使用 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 选择下拉列表时都会触发事件

于 2012-10-01T11:07:51.980 回答