1

沒錯,MVC中的ASP.NET Ajax控件。我知道我知道,有Telerik MVC控件,但Telerik MVC網格沒有我需要的所有東西,所以我在使用ASP.NET Ajax控件時已經死了。MVC和ViewState中的Telerik ASP.NET Ajax RadGrid?

無論如何,我有RadGrid運行良好。當啓用所有花俏如尋呼出現該問題,排序,過濾等看起來它把由組/過濾器/排序數據在eventargument交變量:

__EVENTARGUMENT FireCommand:2$RadGrid1$ctl00;GroupByColumn;Dialog 

在我的情況,當頁面重新加載時,沒有任何變化。有什麼我應該啓用這個在MVC中工作?我已按照http://www.telerik.com/help/aspnet-ajax/mvc-getting-started.html的說明進行操作,但這並未出現。前面的url中的示例並不具備所有的花裏胡哨的功能,所以我假設我需要採取額外的步驟來實現此功能。

謝謝!

+0

所以......存在這種產品,會做你想要什麼的MVC版本。但是你想破解WebForms版本,並將其轉向你的意願呢? –

+0

是的,MVC版本沒有我需要的所有東西,比如多行選擇和許多其他的東西。我真的需要得到的AJAX版本工作:/ – Levitikon

+0

也許這可以與多行選擇工作? (http://demos.telerik.com/aspnet-mvc/grid/checkboxesajax)。不知道許多其他事情是什麼,但至少在正確的方向邁出了一步:) – carlbergenhem

回答

1

我能找到解決方案,雖然它不是很漂亮。它使用一點反射和硬編碼映射到對象樹。希望這對於任何需要MVC中的ViewState的人來說都是一個很好的起點。

基本上它涉及到反序列化ViewState到一個對象,然後使用反射,調用控件的LoadViewState與對象的樹中的右分支。

string viewState = Request.Form["__VIEWSTATE"]; 

    if (!string.IsNullOrEmpty(viewState)) 
    { 
     LosFormatter formatter = new LosFormatter(); 

     object savedStateObject = formatter.Deserialize(viewState); 

     MethodInfo method = grid.GetType().GetMethod("LoadViewState", BindingFlags.NonPublic | BindingFlags.Instance); 

     // TODO: Find a less brittle/more elegant way to isolate the appropiate viewstate object for this control 
     // In the case of Telerik's RadGrid, the key wasy find the tree that had an array of 13 objects 
     method.Invoke(grid, new object[] { (((((((((savedStateObject as Pair).First as Pair).Second as Pair).Second as System.Collections.ArrayList)[1] as Pair).Second as System.Collections.ArrayList)[1] as Pair).Second as System.Collections.ArrayList)[1] as Pair).First }); 
    } 

    string eventArgument = Request.Form["__EVENTARGUMENT"]; 

    if (!string.IsNullOrEmpty(eventArgument)) 
    { 
     grid.RaisePostBackEvent(eventArgument); 
    } 

看到這個職位的詳細信息:Supporting ViewState in an MVC ViewUserControl

0

簽出Telerik的文檔中,它應該有你需要得到這個工作是什麼:Integrating RadControls in ASPNET MVC

+0

謝謝@德米特里,我已經通過了。問題是它只能讓你設置一個基本的場景。我的情況下啓用RadGrid的其他功能,如分組:/ – Levitikon

1

還有斯蒂芬·沃特在微軟開發了一個Ajax的Grid組件,它比Telerik的RadComponent更簡單,但它是可擴展它提供pagin,整理,編輯,創建新等 您可以從下載的NuGet此組件:

PM> Install-Package AjaxGridScaffolder 
1

一個文件,我一直期待與ASP.NET AJAX的整合的RadControls到ASP打交道時進.NET MVC是Limitations article,wh實際上,特別提到內置的排序/分組/過濾(導致回發的任何內容)在ASP.NET MVC中不受支持。但是,有一些希望:)它鏈接到this blog post其中有一個解決方案,包含所有這一切的解決方法,這應該在這裏有所幫助。這篇文章有點舊,但我認爲你仍然可以從中獲得一些有用的信息。

作爲一個側面提示,在這裏可能有一些忍者的方式與Telerik MVC Grid一起工作,這樣你就可以獲得所有的需求,並且可以使用本地ASP.NET MVC。也許發佈他們在Telerik論壇?