2017-11-03 5 views
0

RadGridをフロントページからコードに移動する必要がある場合があります。RadGridのNestedViewTemplateをコードビハインドから埋める方法は?

それはこのように検索するために使用:

<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>を除いて正常に動作します。そこに私の値(テーブル)を送る方法を見つけられなかったし、文字通りそれを行う方法に関する文書もありませんでした。 私は理解しているように、それは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)?

+0

"埋める" を必要?あなたは 'バインド'を意味しますか? – aghilpro

+0

申し訳ありませんが、私は英語が上手ではありませんが、理解できれば幸いです:)確かにバインドが正しい単語になるでしょう –

+0

おそらくこれはあなたを助けます:https://www.telerik.com/forums/bind-nestedviewtemplate-code-behind – aghilpro

答えて

0

[OK]を、それはどのように動作するはずです。

カスタムクラスは、

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 

ああ、私はこの事で無駄にどのくらいの時間...

関連する問題