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我得到的模型,而不是實際的數據。我在模型使用中錯過了什麼?什麼是實施我的用例的最佳方式?