如何从后面的代码中填充 RadGrid NestedViewTemplate?
How to fill RadGrid NestedViewTemplate from code behind?
遇到需要将 RadGrid 从首页移动到代码的情况。
以前是这样的:
<telerik:RadGrid id="rgBooks" runat="server"
Height="300px"
Skin="Office2007"
EnableViewState="true"
AutoGenerateColumns="False" >
<MasterTableView
EditMode="inplace"
TableLayout="auto"
ClientDataKeyNames="BookID, BookName, Created, Modified, BookTypeName, BookTypeID"
NoMasterRecordsText="No available books." >
<HeaderStyle Font-Bold="true" Font-Size="Small" />
<ItemStyle Font-Size="Small" Font-Names="Arial" HorizontalAlign="Left" Wrap="True" BackColor="White"/>
<HeaderStyle Wrap="False" Width="99%" HorizontalAlign="Left"/>
<AlternatingItemStyle Font-Size="Small" Font-Names="Arial" HorizontalAlign="Left" Wrap="True" BackColor="White"/>
<NestedViewTemplate>
<table>
<tr>
<td>
BookType Type:
</td>
<td>
<asp:DropDownList runat="server" ID="ddlBookTypes" AutoPostBack="true" />
</td>
</tr>
....
....
</NestedViewTemplate>
<columns>
<telerik:GridBoundColumn HeaderText="Book Name" HeaderStyle-Width="33%" ItemStyle-Width="33%" UniqueName="BookName" DataField="BookName" />
<telerik:GridBoundColumn HeaderText="Created" HeaderStyle-Width="33%" ItemStyle-Width="33%" UniqueName="Created" DataField="Created" />
<telerik:GridBoundColumn HeaderText="Modified" HeaderStyle-Width="33%" ItemStyle-Width="33%" UniqueName="Modified" DataField="Modified" />
</columns>
....
....
</telerik:RadGrid>
在代码中重新创建它如下所示:
Dim rgBooks As New RadGrid : With rgBooks
.ID = "rgBooks"
.Height = New Unit(300, UnitType.Pixel)
.Skin = "Office2007"
....
....
End With
Me.placeHolder.Controls.Add(rgBooks)
除了<NestedViewTemplate>
,它工作正常。没有找到将我的值发送到那里的方法 (table),而且几乎没有关于如何发送的文档。
据我了解,它应该看起来像 rgBooks.MasterTableView.NestedViewTemplate.InstantiateIn( and here my data )
但每次尝试向那里发送内容都以失败告终,并且 Object reference not set to an instance of an object.
除外
也尝试作为 LiteralControl 发送。
rgBooks.MasterTableView.Controls.Add(New LiteralControl("<NestedViewTemplate>"))
rgBooks.MasterTableView.Controls.Add(New LiteralControl("<table>"))
rgBooks.MasterTableView.Controls.Add(New LiteralControl("<tr>"))
....
....
没有解决。
我该如何正确填写代码 NestedViewTemplate
(顺便说一句,它是 ITemplate
)?
好的,了解它应该如何工作。
需要自定义 class
Public Class NestedTemplate
Implements ITemplate
Public Sub InstantiateIn(container As Control) Implements ITemplate.InstantiateIn
container.Controls.Add(New LiteralControl("<table>"))
container.Controls.Add(New LiteralControl("<tr>"))
....
....
container.Controls.Add(New LiteralControl("</table>"))
End Sub
End Class
然后
rgBooks.MasterTableView.NestedViewTemplate = new NestedTemplate
天哪,我在这件事上浪费了多少时间...
遇到需要将 RadGrid 从首页移动到代码的情况。
以前是这样的:
<telerik:RadGrid id="rgBooks" runat="server"
Height="300px"
Skin="Office2007"
EnableViewState="true"
AutoGenerateColumns="False" >
<MasterTableView
EditMode="inplace"
TableLayout="auto"
ClientDataKeyNames="BookID, BookName, Created, Modified, BookTypeName, BookTypeID"
NoMasterRecordsText="No available books." >
<HeaderStyle Font-Bold="true" Font-Size="Small" />
<ItemStyle Font-Size="Small" Font-Names="Arial" HorizontalAlign="Left" Wrap="True" BackColor="White"/>
<HeaderStyle Wrap="False" Width="99%" HorizontalAlign="Left"/>
<AlternatingItemStyle Font-Size="Small" Font-Names="Arial" HorizontalAlign="Left" Wrap="True" BackColor="White"/>
<NestedViewTemplate>
<table>
<tr>
<td>
BookType Type:
</td>
<td>
<asp:DropDownList runat="server" ID="ddlBookTypes" AutoPostBack="true" />
</td>
</tr>
....
....
</NestedViewTemplate>
<columns>
<telerik:GridBoundColumn HeaderText="Book Name" HeaderStyle-Width="33%" ItemStyle-Width="33%" UniqueName="BookName" DataField="BookName" />
<telerik:GridBoundColumn HeaderText="Created" HeaderStyle-Width="33%" ItemStyle-Width="33%" UniqueName="Created" DataField="Created" />
<telerik:GridBoundColumn HeaderText="Modified" HeaderStyle-Width="33%" ItemStyle-Width="33%" UniqueName="Modified" DataField="Modified" />
</columns>
....
....
</telerik:RadGrid>
在代码中重新创建它如下所示:
Dim rgBooks As New RadGrid : With rgBooks
.ID = "rgBooks"
.Height = New Unit(300, UnitType.Pixel)
.Skin = "Office2007"
....
....
End With
Me.placeHolder.Controls.Add(rgBooks)
除了<NestedViewTemplate>
,它工作正常。没有找到将我的值发送到那里的方法 (table),而且几乎没有关于如何发送的文档。
据我了解,它应该看起来像 rgBooks.MasterTableView.NestedViewTemplate.InstantiateIn( and here my data )
但每次尝试向那里发送内容都以失败告终,并且 Object reference not set to an instance of an object.
也尝试作为 LiteralControl 发送。
rgBooks.MasterTableView.Controls.Add(New LiteralControl("<NestedViewTemplate>"))
rgBooks.MasterTableView.Controls.Add(New LiteralControl("<table>"))
rgBooks.MasterTableView.Controls.Add(New LiteralControl("<tr>"))
....
....
没有解决。
我该如何正确填写代码 NestedViewTemplate
(顺便说一句,它是 ITemplate
)?
好的,了解它应该如何工作。
需要自定义 class
Public Class NestedTemplate
Implements ITemplate
Public Sub InstantiateIn(container As Control) Implements ITemplate.InstantiateIn
container.Controls.Add(New LiteralControl("<table>"))
container.Controls.Add(New LiteralControl("<tr>"))
....
....
container.Controls.Add(New LiteralControl("</table>"))
End Sub
End Class
然后
rgBooks.MasterTableView.NestedViewTemplate = new NestedTemplate
天哪,我在这件事上浪费了多少时间...