![](/img/trans.png)
[英]Accessing the MasterTableView Edit Form in Radgrid to get reference to textbox
[英]telerik radgrid get_masterTableView() not taken on binding json data to radgrid
我從客戶端將列表數組從json綁定到telerik RadGrid。 將數據對象綁定到radgrid的代碼如下所示:
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
<script type="text/javascript">
function SetInTelerikGrid(data) {
var tableView = $find('<%=rgRetrievalList.ClientID %>').get_masterTableView();
tableView.set_dataSource(data);
tableView.dataBind();
}
</script>
</telerik:RadCodeBlock>
radgrid的定義是:
<telerik:RadGrid ID="rgRetrievalList" runat="server" >
<MasterTableView TableLayout="Auto">
<Columns>
<telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID" >
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
Here, as the code reached var tableView = $find('<%=rgRetrievalList.ClientID %>').get_masterTableView(); an error is thrown: Typeerror: cannot read property 'get_masterTableView()' of null. I do not know why it is note able to take property get_masterTableView() of radgrid. Can anyone help me?? Thanks in advance..
當您嘗試將Radgrid與JSON數據綁定時,就會出現此錯誤。
要解決此問題,您必須使用客戶端綁定方法來綁定radgrid,或者為json數據綁定添加虛擬數據。
為JSON數據綁定添加虛擬數據:
ASPX
<!DOCTYPE html>
<html>
<head runat="server">
<title></title>
<script src="Script/jquery-1.10.2.min.js"></script>
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
<script type="text/javascript">
var GridData;
function OnbuttonClient() {
jQuery.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: '',
dataType: 'JSON',
url: 'Forum.aspx/BindGrid',
success: function (result) {
GridData = result.d;
if (GridData.length > 0) {
var divGridContainer = document.getElementById('divGridContainer');
divGridContainer.style.display = "";
var tableView = $find("<%= RadGrid1.ClientID %>").get_masterTableView();
tableView.set_dataSource(GridData);
tableView.dataBind();
}
else {
var divGridContainer = document.getElementById('divGridContainer');
divGridContainer.style.display = "none";
}
},
error: function () {
alert('Error on binding the data');
}
});
return false;
}
</script>
</telerik:RadCodeBlock>
</head>
<body>
<form id="form1" runat="server">
<div>
<telerik:RadScriptManager ID="RadScriptManager1" EnablePageMethods="true" runat="server">
</telerik:RadScriptManager>
<asp:Button ID="Button1" Text="Bind Grid" runat="server" OnClientClick="return OnbuttonClient();" />
<div id="divGridContainer" style="display: none;">
<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false">
<MasterTableView HierarchyLoadMode="Client" DataKeyNames="ID,ParentID" ClientDataKeyNames="ID,ParentID">
<Columns>
<telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID">
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
</div>
</div>
</form>
</body>
</html>
ASPX.CS
protected void Page_Init(object source, System.EventArgs e)
{
}
public void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
dynamic data = new[] {
new { ID = "1", Name ="Name11",ParentID = "0"}
};
RadGrid1.MasterTableView.DataSource = data;
RadGrid1.DataBind();
}
}
protected void Page_PreRender(object sender, EventArgs e)
{
}
[WebMethod]
public static List<Employee> BindGrid()
{
List<Employee> list = new List<Employee>(); ;
Employee obj = new Employee();
obj.ID = "1";
obj.Name = "Name1";
list.Add(obj);
obj = new Employee();
obj.ID = "2";
obj.Name = "Name2";
list.Add(obj);
return list;
}
[Serializable]
public class Employee
{
public string ID { get; set; }
public string Name { get; set; }
}
請檢查此鏈接以獲取更多詳細信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.