用JS调用asp.net按钮点击事件不会调用服务器端事件
本文关键字:事件 调用 服务器端 按钮 JS asp net | 更新日期: 2023-09-27 18:09:28
很抱歉在这里发布一个愚蠢的问题,但我已经束手无策了。我有一个隐藏的字段,在更新面板中有一个按钮,像这样:
<asp:UpdateProgress runat="server" ID="updprCompLines" AssociatedUpdatePanelID="updpanCompLines">
<ProgressTemplate>
<img src="../Images/ajax-loader.gif" alt="Please wait..." /> </ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel runat="server" ID="updpanCompLines" UpdateMode="Conditional">
<%--<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnFillMembers" />
</Triggers>--%>
<ContentTemplate>
<div>
<asp:HiddenField ID="hdnField" runat="server" />
<asp:Button ID="btnFillMembers" runat="server" style="display:none;"
Text="DummyButton" onclick="btnFillMembers_Click" />
</div>
更新面板还包含一个gridview,在我的gridview中我有一个链接按钮:
<ItemTemplate>
<asp:LinkButton ID="lkbtBenefName" runat="server" Text='<%#Eval("COMPETENCE_CODE") %>'
OnClientClick='<%#Eval("COMPETENCE_LINE_ID", "return SelectedCompetence({0})") %>'/>
</ItemTemplate>
调用的是一个JS函数,该函数应该调用上面的按钮:
<ajaxToolkit:ToolkitScriptManager runat="Server" EnablePartialRendering="true" ID="ScriptManager1" EnablePageMethods="true"/>
<script type="text/javascript">
function SelectedCompetence(CompetenceLineId) {
document.getElementById('<%= hdnField.ClientID %>').value = CompetenceLineId;
var clickButton = document.getElementById('<%= btnFillMembers.ClientID %>');
clickButton.click();
}
</script>
按钮点击事件方法:
protected void btnFillMembers_Click(object sender, EventArgs e)
{
lblGvMemError.Text = "";
lblGvMemError.ForeColor = Color.Red;
if (hdnField.Value != null || hdnField.Value.ToString() != "")
{
try
{
int CompLineId = Convert.ToInt32(hdnField.Value);
GetSelectedCompLineMembers(CompLineId);
}
catch (Exception ex)
{
lblGvMemError.Text = "Error: " + ex.Message;
}
}
updpanCompLinesMembers.Update();
}
问题是,在调试时,它从不运行click事件,也不给出任何错误消息。我不明白,我有一个类似的形式;我不明白为什么它不在这里…请帮忙好吗?
您是否确认通过警报或类似方式调用SelectedCompetence ?此外,您是否确保成功地为clickButton变量赋值?
我知道这不是一个答案,但我还没有评论的声誉,有时这是简单的事情,所以也许这将帮助!:)