ASP.NET中的DropDownList有一个onSelectedIndexChange事件,当为下拉列表更改选定的索引时会触发该事件。
我遇到过一种情况,当DropDown的SelectedIndex在选择时没有改变时,我需要触发类似的事件。
在这种情况下,我完全不知道该怎么做?
非常感谢任何帮助/参考。
谢谢。
答案 0 :(得分:0)
为选定的索引更改事件分配事件处理程序,并将autopostback
设置为true
在标记中
或代码
mydropdownlist.SelctedIndexChanged += NameOfMethod
然后像这样定义处理程序
protected void NameOfMethod(object sender, EventArgs e)
{
//your code here
}
<强>更新强>
根据定义,selectedindexchanged
事件只会在索引更改时触发。如果你想强制回传,将需要一些JavaScript。这是一个如何使用jquery
$(function() {
$('select').change();
});
答案 1 :(得分:0)
假设您的页面上有另一个导致回发的服务器端控件,您可以在回发事件中为另一个控件编写例程,该控件将当前选择与先前选择进行比较并触发自定义事件(或如果值没有改变,你想要发生的例程。
那就是说,我必须想象有一种更简单的方法来实现你想要实现的总体目标,但你必须在你的问题中更具体一点。
<强>更新强>
我必须假设您在处理表单时使用下拉列表中的值。为什么不从隐藏的下拉菜单和显示的链接按钮开始?只需从下拉列表中选择一个默认值,然后允许用户根据需要进行更改。
这是一个显示行为的小提琴:http://jsfiddle.net/rjaum/
答案 2 :(得分:0)
我认为这很正常。事件为SelectedIndexChanged
,您说您选择了之前选择的相同项目。所以索引保持不变,没有改变,事件也不会触发。可能你看看OnClick。
问题是您第二次点击时没有更改索引,因此下拉列表仍在等待您更改
答案 3 :(得分:0)
这很容易。 你可以使用javascript / jquery / server side code等来实现这一点。假设用户 点击控件。 在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>
修改强> 您可以使用radiobutton列表而不是dropdownlist。这样,在客户端,您可以在单击单选按钮时检查事件是否已选中(如果已选中,则会触发您的事件)。 的修改 如果您想特别使用下拉列表Fire event each time dropdown list is selected with JQuery
,请尝试查看此主题