使用JavaScript获取RadGrid进行打印
我正在创建一个打印函数,关键是调用我想要打印的网格。如果aspx页面上存在网格,那么它一直运行良好,直到我还需要打印代码后面以编程方式生成的RadGrids列表时,JavaScript无法检测这些不存在的网格,并返回控件不存在的错误。需要明确的是,它不起作用,因为在我输入代码时,页面上没有RadGrid_动态,因此出错。这与页面何时执行/页面生命周期等无关 我的工作是尝试通过字符串值调用控件,就像使用 $find 页面将突出显示RadGrid_Dynamic,并表示它不存在,如上所述。下面是我的代码,我也尝试过用document.getElementById替换$find,但是运气不好,有什么建议吗?谢谢使用JavaScript获取RadGrid进行打印,javascript,jquery,telerik,telerik-grid,radgrid,Javascript,Jquery,Telerik,Telerik Grid,Radgrid,我正在创建一个打印函数,关键是调用我想要打印的网格。如果aspx页面上存在网格,那么它一直运行良好,直到我还需要打印代码后面以编程方式生成的RadGrids列表时,JavaScript无法检测这些不存在的网格,并返回控件不存在的错误。需要明确的是,它不起作用,因为在我输入代码时,页面上没有RadGrid_动态,因此出错。这与页面何时执行/页面生命周期等无关 我的工作是尝试通过字符串值调用控件,就像使用 $find 页面将突出显示RadGrid_Dynamic,并表示它不存在,如上所述。下面是我的
function getOuterHTML(obj) {
if (typeof (obj.outerHTML) == "undefined") {
var divWrapper = document.createElement("div");
var copyOb = obj.cloneNode(true);
divWrapper.appendChild(copyOb);
return divWrapper.innerHTML
}
else {
return obj.outerHTML;
}
}
function Print() {
var previewWindow = window.open('about:blank', '', '', false);
var styleSheet = '<%= Telerik.Web.SkinRegistrar.GetWebResourceUrl(this, RadGrid1.GetType(), String.Format("Telerik.Web.UI.Skins.{0}.Grid.{0}.css", RadGrid1.Skin)) %>';
var baseStyleSheet = '<%= Telerik.Web.SkinRegistrar.GetWebResourceUrl(this, RadGrid1.GetType(), "Telerik.Web.UI.Skins.Grid.css") %>';
var htmlContent = "<html><head><link href = '" + styleSheet + "' rel='stylesheet' type='text/css'></link>";
htmlContent += "<link href = '" + baseStyleSheet + "' rel='stylesheet' type='text/css'></link></head><body>";
for (i = 1; i < 13; i++) {
var CYGrid = "RadGrid_CY_Strategy_" + String(i);
var CYradGrid = $find('<%=CYGrid.ClientID %>'); //Highlighted as red and erorr: The Name 'CYGird' does not exist in the current content
var LYGrid = "RadGrid_LY_" + String(i);
var LYradGrid = $find('<%=LYGrid.ClientID %>'); //Ditto
htmlContent += getOuterHTML(CYradGrid.get_element());
if (LYradGrid.hidden == false) {
htmlContent += getOuterHTML(LYradGrid.get_element());
}
}
htmlContent += "</body></html>";
previewWindow.document.open();
previewWindow.document.write(htmlContent);
previewWindow.document.close();
previewWindow.print();
if (!$telerik.isChrome) {
previewWindow.close();
}
}
您可以在创建动态网格时以编程方式为其分配一个ID,并使用该ID执行$find