Asp.net mvc ASP MVC DevExpress:Controller中的GridViewSettings而不是View

Asp.net mvc ASP MVC DevExpress:Controller中的GridViewSettings而不是View,asp.net-mvc,devexpress,devexpress-mvc,Asp.net Mvc,Devexpress,Devexpress Mvc,我刚开始使用DevExpress使用ASP MVC,我已经创建了包含GridView的视图,并且我在部分视图中进行了设置 短篇小说 我需要将GridViewSettings对象放在控制器中,而不是视图中。 为什么?因为应用程序需要下载网格的Excel文件,到目前为止,这是我见过的唯一方法。但问题是,在控制器中设置网格不允许我在未绑定列中指定标签 代码如下: public GridViewSettings MyGridSettings() { var setting

我刚开始使用DevExpress使用ASP MVC,我已经创建了包含GridView的视图,并且我在部分视图中进行了设置

短篇小说

我需要将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();
                    //  }
            }
        }
    }
简短问题

如何从控制器访问以下代码

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

就像我说的,我需要这样做,因为Excel文件需要下载。尽管如此,如果您有任何我不需要这样做的变通方法,使用所描述的
HtmlHelper
类(阅读使用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
的引用,因此您需要在
GridViewSettings
方法中包含
HtmlHelper
类来创建HTML帮助器扩展

如果设计无法导出您的
DataItemTemplateContent
,请尝试使用将GridView内容导出到XtraReport

其他参考资料:


使用
HtmlHelper
所描述的类(阅读使用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
的引用,因此您需要在
GridViewSettings
方法中包含
HtmlHelper
类来创建HTML帮助器扩展

如果设计无法导出您的
DataItemTemplateContent
,请尝试使用将GridView内容导出到XtraReport

其他参考资料: