我正在使用锚标记,我想在点击锚标记上触发事件。但遗憾的是它无效。这是我的代码:
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无法正常工作。
答案 0 :(得分:0)
你必须使用javascript或jQuery,即从客户端调用服务器端方法的客户端脚本
一个。使用wemethod属性创建方法
[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()");
}
℃。利用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);
}
如果你没有得到这里是完整的文章:Calling Server Side function from Client Side Script
如果您使用的是scriptmanager,则可以使用此Execute server side code from JavaScript using Script Manager
您需要使用_dopostBack
进行psotbacking到服务器或使用ajax来调用服务器端方法
读: Usage of doPostBack in a Real Environment
示例
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','');
}