我刚开始使用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文件下载。虽然,如果你有任何解决方法,我不需要这样做,这将是伟大的
答案 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。
其他参考资料: