簡體   English   中英

從javascript方法調用代碼隱藏函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM