我一直试着把头撞到墙上几个小时试图解决这个问题,我知道网格就在那里,我每次看标记都看着它,但我永远得到这个错误
"无法获得财产' 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>
我想要做的就是在将记录插入数据库后刷新网格,而不必导致回发。
我做错了什么或我错过了什么?
答案 0 :(得分:0)
建议1
如果你说以下一行
var DidYaFindIt = $("#rgCustomers");
有效,然后尝试
masterTable= $("#rgCustomer").get_masterTableView();
masterTable.rebind();
建议2
masterTable = $("<%# rgCustomers.ClientID %>").get_masterTableView();
masterTable.rebind();
在您的代码中的页面加载事件中添加此行
Page.Header.DataBind()
如果有帮助,请告诉我。