【问题标题】:Create button OnClientClick asp net创建按钮 OnClientClick asp net
【发布时间】:2018-05-17 17:37:58
【问题描述】:

我正在从代码 c# 创建按钮:

        Button btnAddCalculation = new Button();
        btnAddCalculation.ID = "btnAddCalculation";
        btnAddCalculation.Text = "Add count";
        btnAddCalculation.SkinID = "middleButton";
        btnAddCalculation.Visible = true;

        string sPath = String.Format(
            "WindowCalculationArenda.aspx?{0}={1}&TempGuid={2}&IdDocument={3}",
            SessionViewstateConstants.CalculationType,
            CalcType.New,
            Guid.NewGuid(),
            oEditedDocument.Id.ToString()
        );
        //          btnAddCalculation.Attributes.Add("onclick", @"window.open('InformationAboutAddAddr.aspx', '_blank', 'location=yes,height=500,width=450,scrollbars=yes,status=yes');");
        btnAddCalculation.Click += new EventHandler(btnClick_cl);
        btnAddCalculation.OnClientClick = clsCommonHelper.sGetWindowOpen(sPath, 1100, 500) + "return false;";

    public static string sGetWindowOpen(string sLink, int iWidth, int iHeight)
    {
        return "javascript:setTimeout(function(){ WindowOpen('" + sLink + "', " + iWidth + ", " + iHeight + "); }, 100); ";
    }

但是在客户端,当我单击时,功能 OnClientClick 不起作用 什么都没发生。我做错了什么???


生成的 HTML:

<input type="submit" name="ctl00$ctl00$Main$EditorMain$tabTabContainer$ctl00$Attr‌​433$btnAddCalculatio‌​n"  
value="Add count" 
id="ctl00_ctl00_Main_EditorMain_tabTabContainer_ctl00_Attr43‌​3_btnAddCalculation"  
disabled="disabled" class="blue_button" />

【问题讨论】:

  • 您需要找出按钮被禁用的原因。可能是由于一些 JavaScript。还要检查您是否需要input[type=submit] 或其他类型是否更合适。这可能与原始问题有关。也许某些 JavaScript 禁用了提交按钮,因为表单还无效。根据选择器的不同,这可能会导致提交类型的所有输入都被禁用。

标签: javascript c# asp.net button onclientclick


【解决方案1】:

按钮被禁用

如果将动态按钮添加到本身已禁用的容器中,则此动态按钮也将被禁用。为确保正确添加按钮,请使用 HTML 中的新容器(例如 &lt;asp:PlaceHolder&gt;)并从代码隐藏向该容器添加按钮。

还可以检查以下内容:-

创建新按钮时,使用 CausesValidation = false。这将避免在单击此按钮时触发任何RequiredFieldValidator。 RequiredFieldValidator 也会阻止按钮被点击。 例如

Button btnAddCalculation = new Button();
btnAddCalculation.ID = "btnAddCalculation";
btnAddCalculation.Text = "Add count";
btnAddCalculation.SkinID = "middleButton";
btnAddCalculation.Visible = true;
btnAddCalculation.Enabled = true;
btnAddCalculation.CausesValidation = false;

【讨论】:

    【解决方案2】:

    解决这个问题:

        Button btnAddCalculation = new Button();
        btnAddCalculation.ID = "btnAddCalculation";
        btnAddCalculation.Text = "Add count";
        btnAddCalculation.SkinID = "middleButton";
        btnAddCalculation.Visible = true;
        btnAddCalculation.Enabled = true;
    
        string sPath = String.Format(
            "WindowCalculationArenda.aspx?{0}={1}&TempGuid={2}&IdDocument={3}",
            SessionViewstateConstants.CalculationType,
            CalcType.New,
            Guid.NewGuid(),
            oEditedDocument.Id.ToString()
        );
        //          btnAddCalculation.Attributes.Add("onclick", @"window.open('InformationAboutAddAddr.aspx', '_blank', 'location=yes,height=500,width=450,scrollbars=yes,status=yes');");
        btnAddCalculation.Click += new EventHandler(btnClick_cl);
        btnAddCalculation.OnClientClick = clsCommonHelper.sGetWindowOpen(sPath, 1100, 500) + "return false;";
    
    public static string sGetWindowOpen(string sLink, int iWidth, int iHeight)
    {
        return "javascript:setTimeout(function(){ WindowOpen('" + sLink + "', " + iWidth + ", " + iHeight + "); }, 100); ";
    }
    

    默认情况下asp.net 服务器会将按钮创建为禁用,除非您明确指定

    【讨论】:

      【解决方案3】:

      您提供的 ASP.NET 代码看起来不错;所以我怀疑这个问题与在客户端运行的脚本有关。也许提交按钮被禁用,因为表单内容还无效。在这种情况下,您的按钮可能会被禁用,具体取决于用于识别提交按钮的选择器。

      为避免这种情况,请更改按钮的行为,使其呈现为button 类型的输入,而不是submit。您可以使用UseSubmitBehavior-property 来实现:

      btnAddCalculation.UseSubmitBehavior = false;
      

      【讨论】:

        猜你喜欢
        • 2013-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多