繁体   English   中英

用JS调用ASP Net Button Click事件将不会调用服务器端事件

[英]Calling asp net button click event with JS will not call server side event

很抱歉在这里发布一个愚蠢的问题,但是我不知所措。 我在更新面板中有一个带有按钮的隐藏字段,如下所示:

<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变量成功分配给?

我知道这不是答案,但是还没有评论的名声,有时这很简单,所以也许会有所帮助! :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM