2014-03-04 76 views
1

我有從組合框到gridview交互的問題。我的用例是:用戶從combox值中選擇,gridview將根據組合框的值更新其內容。我在aps web應用程序中使用devexpress控件。ASP devexpress如何過濾組合框選擇的項目

型號:

public class MyModel 
{ 
    public IEnumerable<Person> Persones() 
    { 
     return DataProvider.GetPersons(); 
    } 

    public IEnumerable<Role> Roles() 
    { 
     return DataProvider.GetRoles(); 
    } 

    public int SelectedRoleId { get; set; } 
} 

索引視圖:

@model DXWebApplication1.Models.MyModel 

@Html.DevExpress().Splitter(settings => { 
    settings.Name = "InnerContentSplitter"; 
    settings.AllowResize = true; 
    settings.Orientation = System.Web.UI.WebControls.Orientation.Vertical; 
    settings.FullscreenMode = false; 
    settings.SeparatorVisible = true; 
    settings.Styles.Pane.Border.BorderWidth = System.Web.UI.WebControls.Unit.Pixel(0); 
    settings.Styles.Pane.Paddings.Padding = System.Web.UI.WebControls.Unit.Pixel(0); 
    settings.Panes.Add(pane => { 
     pane.Name = "InnerContentHeader"; 
     pane.PaneStyle.BorderBottom.BorderWidth = System.Web.UI.WebControls.Unit.Pixel(1); 
     pane.PaneStyle.CssClass = "headerPane"; 
     pane.SetContent("<h2>Header of View</h2>"); 
     }); 

    settings.Panes.Add(pane => 
    { 
     pane.Name = "InnerContent01"; 
     pane.PaneStyle.CssClass = "mainContentPane01"; 
     pane.PaneStyle.BackColor = System.Drawing.Color.White; 
     pane.Size = System.Web.UI.WebControls.Unit.Pixel(150); 
     pane.SetContent(() => 
     { 
      Html.DevExpress().Splitter(splitSettings => 
      { 
       splitSettings.Name = "Splitter001"; 
       splitSettings.AllowResize = false; 
       splitSettings.Orientation = System.Web.UI.WebControls.Orientation.Horizontal; 
       splitSettings.FullscreenMode = false; 
       splitSettings.SeparatorVisible = false; 
       splitSettings.Styles.Pane.Border.BorderWidth = System.Web.UI.WebControls.Unit.Pixel(0); 
       splitSettings.Styles.Pane.Paddings.Padding = System.Web.UI.WebControls.Unit.Pixel(0); 
       splitSettings.Panes.Add(innerpane => 
       { 
        innerpane.AutoWidth = true; 
        innerpane.Name = "Content001"; 
        innerpane.PaneStyle.BackColor = System.Drawing.Color.White; 
        innerpane.PaneStyle.Paddings.Padding = System.Web.UI.WebControls.Unit.Pixel(10); 
        innerpane.PaneStyle.Paddings.PaddingTop = System.Web.UI.WebControls.Unit.Pixel(20); 
        innerpane.SetContent(() => Html.RenderPartial("ComboBoxPartialView", Model)); 
       }); 
       splitSettings.Panes.Add(innerpane => 
       { 
        innerpane.Name = "Content002"; 
        innerpane.PaneStyle.BackColor = System.Drawing.Color.White; 

        innerpane.SetContent(() => Html.RenderPartial("GridViewPartialView", Model)); 
       });     
      }).Render(); 
     }); 
    }); 
}).GetHtml() 

網格部分視圖:

@Html.DevExpress().GridView(
    settings => 
    { 
     settings.Name = "GridView"; 
     settings.CallbackRouteValues = new { Controller = "Home", Action = "GridViewPartialView" }; 

     settings.Width = System.Web.UI.WebControls.Unit.Percentage(100); 
     settings.SettingsPager.Visible = false; 
     settings.SettingsPager.PageSize = 20; 
     settings.Settings.VerticalScrollBarMode = ScrollBarMode.Visible; 
     settings.Settings.VerticalScrollableHeight = 350; 
     settings.Settings.VerticalScrollBarStyle = GridViewVerticalScrollBarStyle.Virtual; 
     settings.ControlStyle.Paddings.Padding = System.Web.UI.WebControls.Unit.Pixel(0); 
     settings.ControlStyle.Border.BorderWidth = System.Web.UI.WebControls.Unit.Pixel(0); 
     settings.ControlStyle.BorderBottom.BorderWidth = System.Web.UI.WebControls.Unit.Pixel(1); 

     // DXCOMMENT: Configure grid's columns in accordance with data model fields 
     settings.Columns.Add("Id"); 
     settings.Columns.Add("Name"); 
     settings.Columns.Add("RoleId"); 
    }).Bind(Model.Persones()).GetHtml() 

組合框局部視圖

@Html.DevExpress().ComboBox(cmbSettings => 
{ 
    cmbSettings.Name = "RoleId"; 
    cmbSettings.Width = System.Web.UI.WebControls.Unit.Pixel(200); 
    cmbSettings.Properties.ValueField = "Id"; 
    cmbSettings.Properties.TextField = "RoleName"; 
    cmbSettings.Properties.ValueType = typeof(int); 
    cmbSettings.SelectedIndex = 0; 
    cmbSettings.Properties.IncrementalFilteringMode = IncrementalFilteringMode.Contains; 

    cmbSettings.Properties.ClientSideEvents.SelectedIndexChanged = 
     "function(s, e) {GridView.PerformCallback();}"; 

}).BindList(Model.Roles()).Bind(Model.SelectedRoleId).GetHtml() 

的Controler:

public class HomeController : Controller 
{ 
    public ActionResult Index([ModelBinder(typeof(DevExpressEditorsBinder))]MyModel mo) 
    { 
     return View(mo);  
    } 

    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult GridViewPartialView([ModelBinder(typeof(DevExpressEditorsBinder))]MyModel mo) 
    { 
     return PartialView("GridViewPartialView", mo); 
    } 

} 

所以我希望在我的CONTROLER更新的模型,但everitime我得到的模型,而不是實際的數據。我在模型使用中錯過了什麼?什麼是實施我的用例的最佳方式?

回答

0

我與DevExpress的人們討論了這個問題,他們幫助我解決了這個問題。

解決方案是here

相關問題