- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用名为 RadGrid 的 Telerik Web 组件,该组件与 Asp.Net ObjectDataSource 绑定(bind)。它允许将绑定(bind)数据导出为 Excel/PDF/Word 格式。问题是文件下载完成后我无法触发 JavaScript 警报。我已经在 Javascript 上尝试过 OnResponseEnd 方法,但它不起作用。
有什么建议吗?
这是迄今为止我的代码隐藏代码。
protected void bXls_Click(object sender, EventArgs e)
{
RadGrid1.MasterTableView.GetColumn("Historico").Visible = false;
RadGrid1.MasterTableView.GetColumn("TareaIdExport").Visible = true;
RadGrid1.ExportSettings.IgnorePaging = true;
RadGrid1.ExportSettings.OpenInNewWindow = false;
RadGrid1.MasterTableView.ExportToExcel();
}
以及组件代码的简短版本
<telerik:RadGrid ID="RadGrid1" runat="server"
AutoGenerateColumns="False"
Culture="es-ES"
GroupPanelPosition="Top" DataSourceID="objGrid"
OnItemCommand="RadGrid1_ItemCommand"
OnItemDataBound="RadGrid1_ItemDataBound"
RenderMode="Lightweight"
OnPreRender="RadGrid1_PreRender1"
AllowFilteringByColumn="True"
AllowPaging="True"
AllowSorting="True"
OnItemCreated="RadGrid1_ItemCreated"
PageSize="4"
OnGridExporting="RadGrid1_GridExporting"
OnPdfExporting="RadGrid1_PdfExporting">
</telerik:RadGrid>
最佳答案
由于导出需要完整的回发,因此不能使用 ajax 来限制从帖子返回的内容。这使得处理整个事件变得困难。您可以做的是使用将从导出的完整回发中返回的 cookie。以下教程使用此方法来解决导出期间显示 AjaxLoadingPanel 的类似问题。
解决方案总结如下。导出完成后,服务器端的 cookie 将添加到表单中。同时,客户端正在轮询并寻找此 cookie。当客户端找到cookie时,表示导出完成。
Show loading panel when exporting RadGrid
以下是根据您的场景调整的代码工作示例:
ASPX:
function gridCommand(sender, args) {
if (args.get_commandName().startsWith("Export")) {
//initiate cookie polling
appendDownloadToken();
}
}
function appendDownloadToken() {
window._downloadToken = new Date().getTime() + "";
//add a form field containing the download token before submit
$telerik.$("<input type='hidden' id='_downloadToken' name='_downloadToken' value='" + window._downloadToken + "' />").appendTo(document.forms[0]);
pollDownloadCookie();
}
function pollDownloadCookie() {
//compare cookie value and initial value
if (cookie.get("_downloadToken") === window._downloadToken) {
//erase download token cookie
cookie.erase("_downloadToken");
//remove the token value
delete window._downloadToken;
//remove the form field
$telerik.$("#_downloadToken").remove();
//show alert
alert('Grid Exported');
} else {
setTimeout(pollDownloadCookie, 100);
}
}
//Helper method to deal with cookies
cookie = {
get: function(name) {
var part = document.cookie.split(name + "=")[1];
return part ? decodeURIComponent(part.split(";")[0]) : null;
},
set: function(name, value, days, path, secure) {
document.cookie = [
name + "=" + encodeURIComponent(value),
days ? "expires=" + new Date(new Date().getTime() + (days * 24 * 60 * 60 * 1000)).toUTCString() : "",
secure ? "secure" : "",
path ? "path=" + path : "path=/"
].join("; ");
},
erase: function(name) {
cookie.set(name, "", -1);
},
all: function() {
var ret = {};
var arr = document.cookie.split(";");
for (var i = 0; i < arr.length; i++) {
if (arr[i]) {
var pair = arr[i].split("=");
ret[pair[0]] = decodeURIComponent(pair[1]);
}
}
return ret;
}
}
<telerik:RadGrid ID="RadGrid1" runat="server" OnNeedDataSource="RadGrid1_NeedDataSource" AutoGenerateColumns="false" OnItemCommand="RadGrid1_ItemCommand">
<ExportSettings ExportOnlyData="True" HideStructureColumns="True" OpenInNewWindow="True"></ExportSettings>
<ClientSettings>
<ClientEvents OnCommand="gridCommand" />
</ClientSettings>
<MasterTableView DataKeyNames="ID" CommandItemDisplay="Top">
<CommandItemSettings ShowExportToExcelButton="true" ShowExportToCsvButton="true" ShowExportToPdfButton="true" ShowExportToWordButton="true" />
<Columns>
<telerik:GridBoundColumn UniqueName="Id" DataField="ID" HeaderText="ID"></telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Name" DataField="Name" HeaderText="Name"></telerik:GridBoundColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
C#:
protected void RadGrid1_NeedDataSource(object sender,
GridNeedDataSourceEventArgs e)
{
DataTable table = new DataTable();
table.Columns.Add("ID", typeof(int));
table.Columns.Add("Name");
for (int i = 1; i <= 5; i++) {
table.Rows.Add(i, "Name" + i.ToString());
}
RadGrid1.DataSource = table;
}
protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e)
{
if (e.CommandName.StartsWith("Export")) {
if (!String.IsNullOrEmpty(Request("_downloadToken"))) {
Response.Cookies.Add(new HttpCookie("_downloadToken",
Request("_downloadToken")));
}
}
}
关于javascript - 显示有关导出完整 RadGrid Telerik Web 组件的数据的 javascript 警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45153342/
我在使用 CodedUI 时遇到了 Silverlight 中选项卡的 telerik 控件的问题。我可以使用 CodedUI 记录我在选项卡中执行的操作,但是当我开始执行 CodedUI 测试时,它
我将网格与 Telerik 的“客户端选择”(http://demos.telerik.com/aspnet-mvc-beta/grid/selectionclientside) 一起使用,并且我的页
我知道我需要使用模板列,但我不清楚如何使用它。 我有一个返回集合的数据源,我可以将集合中的每个属性分配给一个列。 但是我该怎么做: 合并两列?如 col.prop1 +' '+ col.prop2 ?
我有一个 Telerik MVC 网格,其中包含一个 bool 值 CreateIncident。对于新行,我想将该值设置为 true。对于编辑,如果该值已经为真,我想禁用该复选框。剑道 UI 显然是
我使用的是 Telerik 的 RadGrid(RadGrid.Net2(我知道我应该升级到更新的版本,但这里不是一个选项..))。它的功能之一是将数据导出到 excel。使用 grid.Master
我在 asp .net 中创建了一个 telerik RadGrid。我的要求是为列标题提供我自己的颜色。我们怎样才能做到这一点...?下面是我正在使用的代码结构。
是否可以使用 Telerik MVC 扩展在链接标签上设置媒体属性 StyleSheetRegistrar方法? group .Add("telerik.common.css")
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
我在 Telerik MVC Grid 中有一个 DateTime 类型的列。我只想使用它的 Date 部分进行显示和过滤。结果,我使用了以下代码 @(Html.Telerik().Grid()
Xamarin 用 C# 编写模型 用每个操作系统自己的 native 方式编写 View Xamarin promise 在同一天添加库中的新功能 Telerik native 脚本 用 javas
我想在 TreeView 中选择子项时获取父项,并且还想查找所选节点是父节点还是子节点。 如果有人知道如何实现它,请告诉我。 提前致谢, 钦纳亚 最佳答案 为了获取所选节点,您需要使用 select事
我有一个使用自定义编辑模板的弹出编辑模式的radgrid。按下回车键后的编辑表单会将新项目插入网格。我进去添加一个项目。成功插入。然后我添加第二个项目:出现弹出窗口。我输入数据,然后按“输入”键插入项
我试图在预渲染事件中隐藏/显示嵌套telerik rad网格上的不同列,基于一个标志,但无论我将可见或显示属性设置为什么,它们都显示 这些是我的网格列:
我们如何删除以前在 Telerik RadGrid 上在 Post Back 上完成的数据排序。 最佳答案 将主表 View 的 SortExpression 设置为清除。 例子: _rdGrdRep
Telerik Rad Grid 中 ajax 完成事件的名称是什么?我尝试了文档中的内容,但出现以下错误 Parser Error Message: Type 'Telerik.Web.UI.Gri
我正在使用 Telerik 的 MVC 网格,并且我想提交带有一些超出网格值的批量编辑模式更改。根据这个telerik forum我可以调用网格的 submitChanges 函数并在 OnSubmi
我目前正在更改一个网站,该公司希望将所有内容从 Telerik 更改为 Kendo。 我现在遇到了一些麻烦。在 BindTo 方法中可以有一些映射,而 .ItemDataBound 。在那,你可以设置
有人知道更改 MVC 网格的 Telerik 扩展的高度的方法吗?除了使用 手动覆盖样式之外 div#MyGrid .t-grid-content { height: 100px !impor
我在我的 ASP.NET MVC 3 razor 应用程序中使用最新版本的 Telerik MVC 扩展。我还下载了最新版本的 jQuery。 我的 jQuery 文件与 Visual Studio
Telerik's Wiki 中似乎没有任何关于通过用于 MVC 的 Telerik Grid 的客户端 API 进行分组的文档。并且 Google 结果没有提供任何特定于客户端 api 和通过 ja
我是一名优秀的程序员,十分优秀!