ASP MVC DevExpress:在Controller中使用GridViewSettings而不是View

时间:2016-10-27 20:23:07

标签: asp.net-mvc devexpress devexpress-mvc

我刚开始使用DevExpress使用ASP MVC,我创建了里面有GridViews的视图,我在局部视图中进行了设置。

短篇小说

我需要在控制器而不是视图中使用GridViewSettings对象。 为什么?因为应用程序需要下载网格的Excel文件,到目前为止这是我见过的唯一方法。但问题是,控制器中的网格设置不允许我在未绑定列中指定标签。

以下是代码:

    public GridViewSettings MyGridSettings()
    {
        var settings = new GridViewSettings();
        settings.Name = "MyGrid";

        settings.CommandColumn.Visible = true;

        settings.KeyFieldName = "PERSON_ID";

        settings.SettingsPager.Visible = true;
        settings.Settings.ShowGroupPanel = true;
        settings.Settings.ShowFilterRow = true;
        settings.SettingsBehavior.AllowSelectByRowClick = true;

        settings.SettingsAdaptivity.AdaptivityMode = GridViewAdaptivityMode.HideDataCellsWindowLimit;
        settings.SettingsAdaptivity.AdaptiveColumnPosition = GridViewAdaptiveColumnPosition.Right;
        settings.SettingsAdaptivity.AdaptiveDetailColumnCount = 1;
        settings.SettingsAdaptivity.AllowOnlyOneAdaptiveDetailExpanded = false;
        settings.SettingsAdaptivity.HideDataCellsAtWindowInnerWidth = 0;

        settings.Columns.Add("PERSON_ID", "Person ID");

        settings.Columns.Add(col =>
        {
            col.Caption = "Department";
            col.SetDataItemTemplateContent(dataTemplate =>
            {
                String DepartmenID = (String)DataBinder.Eval(dataTemplate.DataItem, "DEPARTMENT_ID");

                    //if (DepartmenID != null)
                    //{
                    //  Html.DevExpress().Label(label =>
                    //    {
                    //        label.Text = String.Format("{0}",
                    //             DataBinder.Eval(dataTemplate.DataItem, "DEPARTMENT.NAME"));
                    //    }).Render();
                    //  }
            }
        }
    }

简短问题

如何从Controller访问以下代码?

Html.DevExpress().Label(label =>
    {
        label.Text = String.Format("{0}",
             DataBinder.Eval(dataTemplate.DataItem, "DEPARTMENT.NAME"));
    }).Render();

就像我说我需要这样做因为Excel文件下载。虽然,如果你有任何解决方法,我不需要这样做,这将是伟大的

1 个答案:

答案 0 :(得分:0)

使用HtmlHelper类描述here(阅读使用HtmlHelper类部分),可能此代码可能会解决您的问题:

public GridViewSettings MyGridSettings(this HtmlHelper html)
{
    var settings = new GridViewSettings();
    settings.Name = "MyGrid";

    // simplified for brevity

    settings.Columns.Add(col =>
    {
        col.Caption = "Department";
        col.SetDataItemTemplateContent(dataTemplate =>
        {
            String DepartmentID = (String)DataBinder.Eval(dataTemplate.DataItem, "DEPARTMENT_ID");

            if (DepartmentID != null)
            {
                html.DevExpress().Label(label => 
                {
                    label.Text = String.Format("{0}", DataBinder.Eval(dataTemplate.DataItem, "DEPARTMENT.NAME"));
                }).Render();
            }
        }
    }

    return settings;
}

与视图不同,默认情况下,控制器操作没有引用HtmlHelper,因此您需要在HtmlHelper方法中包含GridViewSettings类来创建HTML帮助程序扩展。

如果您的DataItemTemplateContent无法按设计导出,请尝试使用How to convert and then print an GridView extension by using the XtraReport example将GridView内容导出到XtraReport。

其他参考资料:

Grid View Exporting - 1

Grid View Exporting - 2

相关问题