使用JavaScript获取RadGrid进行打印

使用JavaScript获取RadGrid进行打印,javascript,jquery,telerik,telerik-grid,radgrid,Javascript,Jquery,Telerik,Telerik Grid,Radgrid,我正在创建一个打印函数,关键是调用我想要打印的网格。如果aspx页面上存在网格,那么它一直运行良好,直到我还需要打印代码后面以编程方式生成的RadGrids列表时,JavaScript无法检测这些不存在的网格,并返回控件不存在的错误。需要明确的是,它不起作用,因为在我输入代码时,页面上没有RadGrid_动态,因此出错。这与页面何时执行/页面生命周期等无关 我的工作是尝试通过字符串值调用控件,就像使用 $find 页面将突出显示RadGrid_Dynamic,并表示它不存在,如上所述。下面是我的

我正在创建一个打印函数,关键是调用我想要打印的网格。如果aspx页面上存在网格,那么它一直运行良好,直到我还需要打印代码后面以编程方式生成的RadGrids列表时,JavaScript无法检测这些不存在的网格,并返回控件不存在的错误。需要明确的是,它不起作用,因为在我输入代码时,页面上没有RadGrid_动态,因此出错。这与页面何时执行/页面生命周期等无关

我的工作是尝试通过字符串值调用控件,就像使用

$find

页面将突出显示RadGrid_Dynamic,并表示它不存在,如上所述。下面是我的代码,我也尝试过用document.getElementById替换$find,但是运气不好,有什么建议吗?谢谢

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