DevExpress Gridview MVC:你在哪里放置gridview的事件?

时间:2013-09-19 08:16:07

标签: asp.net-mvc events model devexpress

我正在使用DevExpress的gridview开发一个MVC项目。

我是MVC和DevExpress的新手。

在每种gridview的项目中: - 我有一个模型,可以访问数据库并返回数据列表 - 我有一个控制器,它将模型传递给相关的视图。 - 我有一个gridview,它显示和排序绑定模型的数据。 gridview需要多个事件来正确显示未绑定列的数据,显示组合框过滤器行等等。

我使用编码来定义gridview(我不知道我是做对还是错,你能证实吗?)

就像:

GridViewSettings settings = new GridViewSettings();
settings.Name = "grid";
....
  //this event to strike the disabled objects in the grid
settings.HtmlRowPrepared = ((project.Models.theModel)Model).gridUsers_htmlRowPrepared;
.....
//And now i render the gridview and i bind it to the list of objects
     Html.DevExpress().GridView(settings). Bind(((project.Models.theModel)Model).getListOfObjects()).Render();

如您所见,目前我的活动已放入模型中。

MVC的方法是将数据流程与视图分开。

我的模型存储了修复网格视图显示的方法:根本不存在MVC。

您如何管理您的活动?你把它放在哪里?

请记住,在项目中,我只能从模型中访问数据库的对象(这就是为什么我将事件放在模型中,以便更容易)。

提前感谢您的答案... Gridview MVC对我来说是一个挑战。

1 个答案:

答案 0 :(得分:0)

如果我没错,你添加了一个GridView示例,

@Html.DevExpress().GridView(
settings =>
{
    settings.Name = "gvFilterRow";
    settings.CallbackRouteValues = new { Controller = "GridView", Action = "FilterRowPartial" };
    settings.Width = Unit.Percentage(100);

    settings.Columns.Add("ProductName");
    settings.Columns.Add(column => {
        column.FieldName = "CategoryID";
        column.Caption = "Category";

        column.ColumnType = MVCxGridViewColumnType.ComboBox;
        var comboBoxProperties = column.PropertiesEdit as ComboBoxProperties;
        comboBoxProperties.DataSource = NorthwindDataProvider.GetCategories();
        comboBoxProperties.TextField = "CategoryName";
        comboBoxProperties.ValueField = "CategoryID";
        comboBoxProperties.ValueType = typeof(int);
        comboBoxProperties.DropDownStyle = DropDownStyle.DropDown;
    });


    settings.Columns.Add("QuantityPerUnit");
    settings.Columns.Add("UnitPrice").PropertiesEdit.DisplayFormatString = "c";
    settings.Columns.Add("ReorderLevel");
    settings.Columns.Add("Discontinued", MVCxGridViewColumnType.CheckBox);

    settings.Settings.ShowFilterRow = true;
    settings.Settings.ShowFilterRowMenu = true;
    settings.CommandColumn.Visible = true;
    settings.CommandColumn.ClearFilterButton.Visible = true;
}).Bind(Model).GetHtml()