如何限制网格列中的文本长度而不限制 Excel 导出中的相同文本
How to limit text length in grid column while not limiting the same text in Excel Export
我目前正在 Telerik RadGrid 中构建一个包含大量数据的 asp.net 应用程序。我的网格中的许多列包含大量文本。为了限制这些列中文本的大小(并保留网格的格式),我在以下代码段中截断了 ItemDataBound(...) 方法中的每个字段:
if (item["Title"].Text.Length > 21)
item["Title"].Text = item["Title"].Text.Substring(0, 21);
if (item["Investigation_Results"].Text.Length > 30)
item["Investigation_Results"].Text = item["Investigation_Results"].Text.Substring(0, 30);
if (item["Resolution_Steps"].Text.Length > 30)
item["Resolution_Steps"].Text = item["Resolution_Steps"].Text.Substring(0, 30);
问题是,当使用 RadGrid 的 Excel 导出功能时,被截断的字段在导出的 csv 中也会被截断。
问: 如何在网格视图中截断数据,但在导出到 Excel 时完整显示数据?
附加信息:
在此按钮单击事件上调用导出:
protected void imgbtnexcel_Click(object sender, ImageClickEventArgs e)
{
ConfigureExport();
RadGridActionItem.MasterTableView.ExportToExcel();
}
protected void ConfigureExport()
{
RadGridActionItem.ExportSettings.ExportOnlyData = true;
RadGridActionItem.ExportSettings.IgnorePaging = true;
RadGridActionItem.ExportSettings.OpenInNewWindow = true;
}
radgrid 的 excel 导出根据绑定到网格的数据生成 sheet。
如果要在导出中显示全文而不是在屏幕上显示,则需要使用 css and/or javascript 隐藏文本。
执行此操作的一种方法是处理 NeedDataSource 事件。在这种情况下,根据您是否要导出,为数据源提供完整或截断的文本。您没有提供此代码,但您应该能够判断您是使用 GridExporting 事件、按钮单击事件还是类似事件进行导出。
通过在 ItemDataBound(...) 中的 "truncating code" 周围放置一个条件语句(exporting/not 导出),我能够获得我想要的功能。然后,我使用了一个全局布尔变量,并在导出按钮单击事件中将其标记为 true。
static bool exportBool;
在 ItemDataBound(...) 中:
if (ActionItem.exportBool != true) // MK CHANGE
{
if (item["Title"].Text.Length > 21)
item["Title"].Text = item["Title"].Text.Substring(0, 21) + "...";
if (item["Investigation_Results"].Text.Length > 30)
item["Investigation_Results"].Text = item["Investigation_Results"].Text.Substring(0, 30) + "...";
if (item["Resolution_Steps"].Text.Length > 30)
item["Resolution_Steps"].Text = item["Resolution_Steps"].Text.Substring(0, 30) + "...";
}
导出按钮点击事件:
protected void imgbtnexcel_Click(object sender, ImageClickEventArgs e)
{
ActionItem.exportBool = true;
BindGrid();
ConfigureExport();
RadGridActionItem.MasterTableView.ExportToExcel();
}
请注意,布尔值在 Page_Load() 中设置为 false。
谢谢!
可以在 RadGrid 中设置 CSS 样式吗?将所有文本都放在那里是否可以接受table,但通过CSS将其截断?
在正常的 table
中,您可以执行以下操作:
在 table 本身上设置此样式:
table { table-layout: fixed; width: 100%; }
在实际的单元格上,您需要设置样式(下例中的"title"):
td.title { white-space:nowrap; overflow: hidden; width: 200px; }
数据仍然存在,只是被截断了。
我目前正在 Telerik RadGrid 中构建一个包含大量数据的 asp.net 应用程序。我的网格中的许多列包含大量文本。为了限制这些列中文本的大小(并保留网格的格式),我在以下代码段中截断了 ItemDataBound(...) 方法中的每个字段:
if (item["Title"].Text.Length > 21)
item["Title"].Text = item["Title"].Text.Substring(0, 21);
if (item["Investigation_Results"].Text.Length > 30)
item["Investigation_Results"].Text = item["Investigation_Results"].Text.Substring(0, 30);
if (item["Resolution_Steps"].Text.Length > 30)
item["Resolution_Steps"].Text = item["Resolution_Steps"].Text.Substring(0, 30);
问题是,当使用 RadGrid 的 Excel 导出功能时,被截断的字段在导出的 csv 中也会被截断。
问: 如何在网格视图中截断数据,但在导出到 Excel 时完整显示数据?
附加信息:
在此按钮单击事件上调用导出:
protected void imgbtnexcel_Click(object sender, ImageClickEventArgs e)
{
ConfigureExport();
RadGridActionItem.MasterTableView.ExportToExcel();
}
protected void ConfigureExport()
{
RadGridActionItem.ExportSettings.ExportOnlyData = true;
RadGridActionItem.ExportSettings.IgnorePaging = true;
RadGridActionItem.ExportSettings.OpenInNewWindow = true;
}
radgrid 的 excel 导出根据绑定到网格的数据生成 sheet。
如果要在导出中显示全文而不是在屏幕上显示,则需要使用 css and/or javascript 隐藏文本。
执行此操作的一种方法是处理 NeedDataSource 事件。在这种情况下,根据您是否要导出,为数据源提供完整或截断的文本。您没有提供此代码,但您应该能够判断您是使用 GridExporting 事件、按钮单击事件还是类似事件进行导出。
通过在 ItemDataBound(...) 中的 "truncating code" 周围放置一个条件语句(exporting/not 导出),我能够获得我想要的功能。然后,我使用了一个全局布尔变量,并在导出按钮单击事件中将其标记为 true。
static bool exportBool;
在 ItemDataBound(...) 中:
if (ActionItem.exportBool != true) // MK CHANGE
{
if (item["Title"].Text.Length > 21)
item["Title"].Text = item["Title"].Text.Substring(0, 21) + "...";
if (item["Investigation_Results"].Text.Length > 30)
item["Investigation_Results"].Text = item["Investigation_Results"].Text.Substring(0, 30) + "...";
if (item["Resolution_Steps"].Text.Length > 30)
item["Resolution_Steps"].Text = item["Resolution_Steps"].Text.Substring(0, 30) + "...";
}
导出按钮点击事件:
protected void imgbtnexcel_Click(object sender, ImageClickEventArgs e)
{
ActionItem.exportBool = true;
BindGrid();
ConfigureExport();
RadGridActionItem.MasterTableView.ExportToExcel();
}
请注意,布尔值在 Page_Load() 中设置为 false。
谢谢!
可以在 RadGrid 中设置 CSS 样式吗?将所有文本都放在那里是否可以接受table,但通过CSS将其截断?
在正常的 table
中,您可以执行以下操作:
在 table 本身上设置此样式:
table { table-layout: fixed; width: 100%; }
在实际的单元格上,您需要设置样式(下例中的"title"):
td.title { white-space:nowrap; overflow: hidden; width: 200px; }
数据仍然存在,只是被截断了。