繁体   English   中英

onserverclick事件在C#中使用html生成器不起作用

[英]onserverclick event not working using html builder in C#

我正在使用锚标记,并且要在单击锚标记上触发事件。但是很遗憾,它无法正常工作。 这是我的代码:

html.Append("<a id='dltTag'  class='ca_quy_e' runat='server' onserverclick='Delete_Click'>");
            html.Append("<i class='fa'>");
            html.Append("</i>");
            html.Append("</a>");

protected void Delete_Click(object sender, EventArgs e)
{
      //My code
}

每件事都像表格一样完美地形成,但只有onserverclick无法正常工作。

您必须利用javascript或jQuery即客户端脚本来从客户端调用服务器端方法

一种。 具有wemethod属性的create方法

[WebMethod]
    public static string IsExists(string value)
    {
        //code to check uniqe value call to database to check this
        return "True";
    }

用元素注册客户呼叫

    protected void Page_Load(object sender, EventArgs e)
     {
          if (!IsPostBack)
               txtData.Attributes.Add("onblur", "focuslost()");
     }

C。 利用jQuery Ajax

function IsExists(pagePath, dataString, textboxid, errorlableid) {

$.ajax({
     type:"POST",
     url: pagePath,
     data: dataString,
     contentType:"application/json; charset=utf-8",
     dataType:"json",
     error:
          function(XMLHttpRequest, textStatus, errorThrown) {
               $(errorlableid).show();
               $(errorlableid).html("Error");
          },
     success:
          function(result) {
               var flg = true;
               if (result != null) {
                    flg = result.d;
                    if (flg == "True") {
                         $(errorlableid).show();
                    }
                    else {
                         $(errorlableid).hide();
                    }
          }
     }
    });
}
function focuslost() {
     var pagePath = window.location.pathname + "/IsExists";
     var dataString = "{ 'value':'" + $("#<%= txtData.ClientID%>").val() + "' }";
     var textboxid = "#<%= txtData.ClientID%>";
     var errorlableid = "#<%= lblError.ClientID%>";
     IsExists(pagePath, dataString, textboxid, errorlableid);
}

如果您没有得到,那么这里是全文: 从客户端脚本调用服务器端功能

如果您使用的是scriptmanager,则可以使用Script Manager从JavaScript使用此Execute服务器端代码


您需要使用_dopostBack进行psotbacking到服务器或使用ajax调用服务器端方法

阅读: 在实际环境中使用doPostBack

html.Append("<a id='dltTag'  class='ca_quy_e' runat='server' onclick='DoPostBack()'>");
            html.Append("<i class='fa'>");
            html.Append("</i>");
            html.Append("</a>");

function DoPostBack() 
{
  __doPostBack('DeleteButton','');     
}

暂无
暂无

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

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