【问题标题】:Javascript TypeError when calling grid.get_selectedItems on Telerik RadGrid在 Telerik RadGrid 上调用 grid.get_selectedItems 时出现 Javascript TypeError
【发布时间】:2014-09-03 15:07:34
【问题描述】:

我有一个RadGrid 和一个ClientSelectColumn。当用户进行选择并单击按钮时,我需要获取所有选定的项目。根据Telerik Documentation,这段代码应该可以工作。我已经不得不使用getElementById,因为$find 由于某种原因不起作用。

function GetSelectedItems() {
        var grid = document.getElementById("<%= RadGrid1.ClientID %>");
        var selectedRows = grid.get_selectedItems(); //ERROR
        var selectedLabIDs = [];

        for (var i = 0; i < selectedRows.length; i++) {
            var selectedLabID = selectedRows[i].getDataKeyValue("LabID");
            selectedLabIDs.push(selectedLabID);
        }

        var list = selectedLabIDs.join('|');

        MergePDF(list);
    }

当按钮调用GetSelectedItems() 我得到这个:

TypeError: grid.get_masterTableView 不是函数

这是为什么?

编辑:这是RadGrid 和页面其余部分的标记。

<telerik:RadScriptManager runat="server" ID="RadScriptManager1">
    <Scripts>
        <%--Needed for JavaScript IntelliSense in VS2010--%>
        <%--For VS2008 replace RadScriptManager with ScriptManager--%>
        <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" />
        <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" />
        <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js" />
    </Scripts>
</telerik:RadScriptManager>

<telerik:RadSkinManager ID="QsfSkinManager" runat="server" Skin="Metro" />
<telerik:RadFormDecorator ID="QsfFromDecorator" runat="server" DecoratedControls="All" EnableRoundedCorners="false" />
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" />

<telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server">

<telerik:RadGrid ID="RadGrid1" GridLines="None" runat="server" AutoGenerateColumns="False"
    AllowSorting="True"
    AllowMultiRowSelection="true"
    AllowPaging="True"
    OnNeedDataSource="RadGrid1_NeedDataSource" OnDataBound="RadGrid1_DataBound">
    <HeaderStyle ForeColor="White" HorizontalAlign="Center" />
    <ClientSettings>
        <Selecting AllowRowSelect="true" />
        <ClientEvents OnRowSelected="RowSelected" />
    </ClientSettings>
    <MasterTableView DataKeyNames="CustReview, MachineName, LabID, MachCond, LubCond, PointID, CustEQUID, CANote, rptNotes, Feedback, ReportType" ClientDataKeyNames="LabID">
        <Columns>
            <telerik:GridBoundColumn DataField="CustReview" HeaderText="Customer Review" DataType="System.String" />
            <telerik:GridBoundColumn DataField="PlantName" HeaderText="Plant Name" DataType="System.String" />
            <telerik:GridBoundColumn DataField="MachineName" HeaderText="Machine" DataType="System.String" />
            <telerik:GridBoundColumn DataField="CustEQUID" HeaderText="Customer ID" DataType="System.String" />
            <telerik:GridBoundColumn DataField="LabID" HeaderText="Report #" DataType="System.Int32" />
            <telerik:GridClientSelectColumn UniqueName="SelectColumn" />
            <telerik:GridBoundColumn DataField="ReportType" HeaderText="Type" DataType="System.String" />
            <telerik:GridImageColumn HeaderText="Mach" UniqueName="MachineConditionImage" />
            <telerik:GridImageColumn HeaderText="Lub" UniqueName="LubricantConditionImage" />
            <telerik:GridDateTimeColumn DataField="ReceivedDate" DataFormatString="{0:d}" UniqueName="ReceivedDateColumn" HeaderText="Rec. Date" />
            <telerik:GridHyperLinkColumn HeaderText="Feedback" UniqueName="FeedbackColumn" />
            <telerik:GridHyperLinkColumn HeaderText="Corrective Action" UniqueName="CorrectiveActionColumn" />
            <telerik:GridImageColumn HeaderText="Notes" UniqueName="NotesColumn" />

            <%--Hidden Columns --%>
            <telerik:GridBoundColumn DataField="PointID" DataType="System.Int32" Visible="false" />
            <telerik:GridBoundColumn DataField="MachCond" DataType="System.Int32" Visible="false" />
            <telerik:GridBoundColumn DataField="LubCond" DataType="System.Int32" Visible="false" />
            <telerik:GridBoundColumn DataField="rptNotes" DataType="System.String" Visible="false" />
            <telerik:GridBoundColumn DataField="Feedback" DataType="System.String" Visible="false" />
            <telerik:GridBoundColumn DataField="CANote" DataType="System.String" Visible="false" />
            <%--Hidden Columns --%>
        </Columns>
    </MasterTableView>
</telerik:RadGrid>

<input type="hidden" id="SelectList" runat="server" />
<input type="hidden" id="PlantID" runat="server" />
<input type="hidden" id="RouteID" runat="server" />
<input type="hidden" id="NumberOfResults" runat="server" />

</telerik:RadAjaxPanel>
<telerik:RadWindowManager ID="RadWindowManager1" runat="server"></telerik:RadWindowManager>

【问题讨论】:

    标签: javascript telerik telerik-grid


    【解决方案1】:

    您看到 grid.get_masterTableView 不是函数的错误的原因是因为您的 var grid 不是有效的 RadGrid。你可以像这样得到网格:

    var grid = $find("RadGrid1");
    

    【讨论】:

    • 使用 $find 对我不起作用,它将返回 null。我认为getElementByID() 做同样的事情,只是没有 jQuery。
    • 但是你传入的网格名称是什么?如果您像您的示例中那样执行&lt;%= RadGrid1.ClientID %&gt;,那么这可能行不通(我也从来没有这样做过)。如果您只是像我在回答中所说的那样使用RadGrid1 之类的网格名称,那应该可以。没有理由这样的事情不适合你。
    • 我传入了“RadGrid1”,$find 返回了 null。不幸的是,听起来我可能需要向他们开一张票。
    • 也为您的 RadGrid 发布标记。 $findgetElementByID 都应该可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 2014-02-22
    • 2012-06-16
    相关资源
    最近更新 更多