无法获得属性' get_masterTableView'未定义或空引用

时间:2015-05-24 23:25:53

标签: javascript c# asp.net webforms telerik-grid

我一直试着把头撞到墙上几个小时试图解决这个问题,我知道网格就在那里,我每次看标记都看着它,但我永远得到这个错误

  

"无法获得财产' get_masterTableView'未定义或空引用"

现在如果我这样做

var isItThere = document.getElementById("rgCustomers");

它表明它在那里,如果这样做..

var DidYaFindIt = $("#rgCustomer");

甚至表明它在那里。

但是一旦我这样做了..

var masterTable = $find("<%= rgCustomers.ClientID %>").get_masterTableView();

它会抛出错误。

我在pageload事件上进行数据绑定

rgCustomers.DataSource = AWD.GetCustomers().ToList();
rgCustomers.DataBind();

我正在调用此脚本,它位于标题之外,直接位于标题之下,如果我将其放入标题中,则会收到有关&lt; %%&gt;的其他错误在控件中,如果我将它保留在标题中并将其更改为此&lt;%#而不是此&lt;%=,则会出现相同的错误

function refreshGrid() {
    var isItThere = document.getElementById("rgCustomers"); // Yep, its there

    var DidYaFindIt = $("#rgCustomer"); // Yep, its there

    var masterTable = $find("<%= rgCustomers.ClientID %>").get_masterTableView(); // Nope, can't find it throws an error
    masterTable.rebind();
}

当我点击保存按钮时,我会这样做

Page.ClientScript.RegisterStartupScript(GetType(),"FindMyGrid","refreshGrid();",true);

我有RadAjaxManager

<!-- Rad Ajax Manager -->
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
        <AjaxSettings>
            <telerik:AjaxSetting AjaxControlID="rgCustomers">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="rgCustomers"></telerik:AjaxUpdatedControl>
                </UpdatedControls>
            </telerik:AjaxSetting>
        </AjaxSettings>
    </telerik:RadAjaxManager>
<!-- End RadAjaxManager -->

这是我的网格

<telerik:RadGrid ID="rgCustomers" runat="server" GridLines="None"
    AllowPaging="False" AllowSorting="True"
    AllowMultiRowSelection="True" GroupingSettings-CaseSensitive="false" AutoGenerateColumns="false" Height="120px" Width="560px">
    <MasterTableView DataKeyNames="CustomerID" ClientDataKeyNames="CustomerID"
        CommandItemDisplay="None" AutoGenerateColumns="False" AlternatingItemStyle-BackColor="LightBlue">
        <Columns>
            <telerik:GridBoundColumn DataField="CustomerID" FilterControlAltText="Filter CustomerID column"
                HeaderText="CustomerID" UniqueName="CustomerID" Display="false" />
            <telerik:GridClientSelectColumn UniqueName="SelectColumn" Resizable="false">
                <HeaderStyle Width="30px" />
            </telerik:GridClientSelectColumn>
            <telerik:GridBoundColumn DataField="Name" FilterControlAltText="Filter Customer column"
                HeaderText="Customer" UniqueName="Name" Visible="True" AutoPostBackOnFilter="true" />
            <telerik:GridBoundColumn DataField="Contact" FilterControlAltText="Filter Contact column"
                HeaderText="Contact" UniqueName="Contact" Visible="True" AutoPostBackOnFilter="true" />
            <telerik:GridBoundColumn DataField="City" FilterControlAltText="Filter City column"
                HeaderText="City" UniqueName="City" Visible="True" AutoPostBackOnFilter="true" />
            <telerik:GridBoundColumn DataField="State" FilterControlAltText="Filter State column"
                HeaderText="State" UniqueName="State" Visible="True" AutoPostBackOnFilter="true" />
        </Columns>
    </MasterTableView>
    <ClientSettings>
        <Scrolling AllowScroll="true" UseStaticHeaders="true" ScrollHeight="100px" />
        <Selecting AllowRowSelect="true" />
    </ClientSettings>
</telerik:RadGrid>

我想要做的就是在将记录插入数据库后刷新网格,而不必导致回发。

我做错了什么或我错过了什么?

1 个答案:

答案 0 :(得分:0)

建议1

如果你说以下一行

          var DidYaFindIt = $("#rgCustomers");

有效,然后尝试

         masterTable= $("#rgCustomer").get_masterTableView();
         masterTable.rebind();

建议2

   masterTable = $("<%# rgCustomers.ClientID %>").get_masterTableView();
   masterTable.rebind();

在您的代码中的页面加载事件中添加此行

          Page.Header.DataBind()

如果有帮助,请告诉我。