[英]Call a codebehind function from a javascript method
我正在嘗試使用javascript調用Codebehind函數。 我需要使用gridview進行一些操作。 這是我的JavaScript:
function hideColumn() {
var gridrows = $("#GridViewHdcvi tbody tr");
AddTeklif.RemoveTextBoxes();
for (var i = 0; i < gridrows.length; i++) {
gridrows[i].cells[5].style.display = "none";
}
return false;
};
而我的代碼背后:
[WebMethod]
public static void RemoveTextBoxes()
{
foreach (GridViewRow row in GridViewHdcvi.Rows)
{
TextBox txb = (TextBox)row.FindControl("txtAdet");
string adet = txb.Text;
txb.Visible = false;
Label lbl = (Label)row.FindControl("LblAdet");
lbl.Text = adet+" $";
}
}
我有一個錯誤,例如“ GridViewHdcvi.Rows”中的“非靜態字段,方法或屬性CRM.AddTeklif.GridViewHdcvi需要對象引用”。 當我使方法名稱為“ public void RemoveTextBoxes()”時,錯誤消失了,但由於該方法不是靜態的,因此無法正常工作。
看來您正在混合兩個不同的概念。 JavaScript是通過瀏覽器運行的,將無法訪問您的服務器代碼。 您正在執行的操作是在將頁面呈現為發送到瀏覽器時嘗試調用WebMethod。
更好的方法是將您的RemoveTextBoxes方法轉換為jQuery,因為您要修改DOM。
這就是從后面的代碼調用JavaScript函數hideColumn()的方式。
將其放在您要調用javascript函數的方法中。
Page.ClientScript.RegisterStartupScript(this.GetType(), "hideColumn", "hideColumn(;", true);
要從javascript函數調用代碼隱藏功能,您必須發揮一些技巧。
1.)創建一個隱藏的按鈕控件。 您必須將其隱藏在CssClass中
<asp:Button ID="hdnButton" runat="server" CssClass="hidden" />
.hidden {
display: none;
}
2.)在您的代碼后面創建一個單擊hdnButton方法
3.)從您的JavaScript調用隱藏的按鈕單擊事件
function CallCodeBehind() {
document.getElementById('<%= hdnButton.ClientID%>').click();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.