我的页面上有Dropdownlist,并且在文件(.cs)后面的代码中创建了selectedindexchanged方法。
我想用A标签创建假回传(onmouseover事件)。
首先我查看了html的来源。
<select name="ctl00$cpholder_ana$ddlFaturaNolar" onchange="javascript:setTimeout('__doPostBack(\'ctl00$cpholder_ana$ddlFaturaNolar\',\'\')', 0)" id="ctl00_cpholder_ana_ddlFaturaNolar">
<option selected="selected" value="CHOOSE"></option>
<option value="001926">[ 30.04.2009 - 156.492,00 TL ] 001926</option>
</select>
然后,我复制了
onchange="javascript:setTimeout('__doPostBack(\'ctl00$cpholder_ana$ddlFaturaNolar\',\'\')', 0)"
并且,我创建了一个带有鼠标悬停事件的标签(用于制作Postback但是由Dropdownlist触发)
<a onmouseover="javascript:setTimeout('__doPostBack(\'ctl00$cpholder_ana$ddlFaturaNolar\',\'\')', 0)">asdasdasdasdad</a>
但它没有降到SelectedIndexChanged方法。
谢谢你们。
答案 0 :(得分:11)
您可以使用此代码段 -
__doPostBack('<%= dropdownlist.UniqueID %>', '');
您不能使用硬编码的唯一ID,因为它们可能由于许多原因而发生变化。对于例如如果父控件的id更改等,则id将更改。您将必须使用上面给出的代码从服务器端获取UniqueID。
编辑:忘了提一件重要的事情。仅当下拉列表的selectedIndex更改时页面才会回发:)因此,如果要触发该事件,请使用此更改下拉列表的索引,然后调用__doPostBack
代码 -
document.getElementById("<%= dropdownlist.UniqueID %>").selectedIndex = 1;
__doPostBack('<%= dropdownlist.UniqueID %>', '');
EDIT2:根据Bob的说法,您可以使用隐藏的服务器控件。我建议你使用asp:Hidden控件并挂钩它的OnValueChanged事件。因此,只要您想将页面发布回服务器,就必须更改隐藏变量的值。这样您就不必使用隐藏按钮了。
document.getElementById("<%= hiddenField.UniqueID %>").value = (new Date()).getTime();
答案 1 :(得分:1)
我很遗憾地说那些人
__ doPostBack不适用于DropDownList,但它适用于Button。做一件事
添加一个应该遵循的按钮
<asp:DropDownList ID="ddlCategory" runat="server" AutoPostBack="true"
OnSelectedIndexChanged="ddlCategory_SelectedIndexChanged">
<asp:ListItem Text="All" Value="0" Selected="True"></asp:ListItem>
<asp:ListItem Text="Published" Value="1"></asp:ListItem>
<asp:ListItem Text="Pending" Value="2"></asp:ListItem>
<asp:ListItem Text="Rejected" Value="3"></asp:ListItem></asp:DropDownList>
现在调用你的__doPostBack方法
__doPostBack('<%= btnRefresh.UniqueID %>','');
答案 2 :(得分:0)
你可以尝试的另一个选项,我发现它更容易并且可能会破坏,是在页面上创建一个隐藏的(style =“display:none”不使用visible属性)asp:Button。当您想要回发时,您可以模拟该按钮上的点击
document.getElementById("<%= Button1.ClientID %>").click();
如果您希望坚持在下拉列表中回发,请确保下拉列表的AutoPostBack属性仍设置为true。请记住,此行为有点奇怪,您正在鼠标上触发选定的已更改事件。这不仅有点令人困惑,而且还增加了意外回发的风险,因为它很容易鼠标悬停在某些东西上并且不会发生任何事情。
答案 3 :(得分:0)
不是<%= ddlFaturaNolar.ClientID %>
吗?