簡體   English   中英

.Net:在沒有回發的情況下將值從JavaScript傳遞到C#

[英].Net: Passing values from JavaScript to C# without a Postback

我使用第三方gridview(DevExpress Web表單ASPxGridView)制作了一個.Net Web應用程序。

可以說我有兩個網格(Grid1和Grid2,均為devexpress)。

我遇到一個問題,我需要根據Grid1中的哪一列(在onClick事件期間)單擊來更新Grid2中的值。

我能夠捕獲JavaScript中的行和列,但無法將其傳遞回我的服務器端代碼。

網格具有與編輯模式相關的一些設置,即如果頁面執行完整的回發,則網格將丟失其編輯。

我嘗試設置HiddenField並調用回發,但是這會刪除網格中的編輯。 我嘗試將變量傳遞給靜態方法,但是無法訪問頁面上的控件來更新Grid2。 我已經研究過嘗試執行回調而不是回發,但是看起來回調正在引用客戶端方法。

有誰知道一種不通過回發將客戶端變量傳遞給c#的方法,還是從JavaScript調用非靜態c#方法的方法? 任何建議將不勝感激。

最基本的方法包括兩個部分,第1部分)在現有網格頁面上添加ajax js函數來處理click事件並發出數據請求。 第2部分)編寫一個單獨的C#網頁,以接收客戶端Grid1-變量,對其進行相應的處理,然后以Grid2的數據進行響應。 這是有關ajax調用可能看起來是什么樣的偽代碼,希望對您有所幫助。

//in your javascript section
$("#Grid1Cell").click(function(){
    $.ajax({
      type: "GET",
      url: '@Url.Action("GetGrid2Data", "SomeController")"?yourVar=' + encodeURI(yourVal), 
           //alternatively  url: "yourNonMVCpage.aspx?yourVar=" + encodeURI(yourVal), 
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function (response) {
          if (response.SomeValues == "blah") {
              $("#Grid2Cell").text(response.SomeValues); //update Grid2
          }
    }});
});

如果您需要“連接c#”,則有必要向服務器執行請求(使用任何可用的技術-回調,回發等)。

如果在此請求期間需要刷新另一個控件(Grid2)呈現,則應作為此請求的結果返回相應的HTML內容。

根據提供的描述,您需要實現“級聯網格”-即,在更改主網格時更新從屬網格。 如果是這樣,請使用https://github.com/DevExpress-Examples/how-to-show-detail-information-in-a-separate-aspxgridview-e70示例中說明的方法,並強制依賴網格自定義回調(和進一步刷新),方法是通過客戶端的PerformCallback方法+處理服務器端的CustomCallback事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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