使用JavaScript获取RadGrid进行打印

时间:2014-08-02 12:01:41

标签: javascript jquery telerik telerik-grid radgrid

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

我的工作是尝试按字符串值调用控件,如使用

$find('<%= RadGrid_Dynamic.ClientID %>')

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

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();
    }
}

1 个答案:

答案 0 :(得分:0)

您可以在动态网格创建时以编程方式为其分配ID,并使用该ID执行$find()