- - PR -
Repeater の中の DataGrid が参照できない
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-06-09 09:15
ASP.NET(C#)での開発です。
Web フォームの Repeater の中に DataGrid を入れて、同一レイアウトの表が 縦に並ぶページを作成しています。 作りとしては <asp:Repeater> の中に <asp:DataGrid> を入れているだけなの ですが、内部の DataGrid がプロパティのプルダウンに表示されません。 また、サーバ側のソースで ID に付けた文字列でコントロールを参照しても、 ウォッチでは <未定義の値> と表示され、NullReferenceException が発生し ます。 DataGrid の値によりセルを結合したり、CssClass を変更したりしたいのです が、どこに問題があるかおわかりになる方がいらっしゃいましたら、教えてく ださい。 aspx ソースコードは下記の通りです。 <asp:Repeater ID="Repeater1" Runat="server"> <ItemTemplate> <p> <asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False" CssClass="table_list_c" BorderStyle="NotSet" CellSpacing="1" DataSource='<%#((DataRowView)Container.DataItem).Row.GetChildRows("Relation1") %>' Width="97%"> <HeaderStyle CssClass="table_td_head_c"></HeaderStyle> <Columns> <asp:TemplateColumn HeaderText="列1"> <HeaderStyle Wrap="False"></HeaderStyle> <ItemStyle CssClass="label_l" Width="120px"></ItemStyle> <ItemTemplate> <%# ((DataRow)Container.DataItem)["Row1"] %> </ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="列2"> <HeaderStyle Wrap="False"></HeaderStyle> <ItemStyle CssClass="label_l"></ItemStyle> <ItemTemplate> <%# ((DataRow)Container.DataItem)["Row2"] %> </ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="列3"> <HeaderStyle Wrap="False"></HeaderStyle> <ItemStyle Wrap="False" CssClass="label_l" Width="80px"></ItemStyle> <ItemTemplate> <%# ((DataRow)Container.DataItem)["Row3"] %> </ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="選択"> <HeaderStyle Wrap="False"></HeaderStyle> <ItemStyle Wrap="False" CssClass="label_c" Width="20px"></ItemStyle> <ItemTemplate> <input name="RadioSelection" type="radio" value='<%# ((DataRow)Container.DataItem)["Choice"] %>' /> </ItemTemplate> </asp:TemplateColumn> </Columns> </asp:datagrid> </p> </ItemTemplate> </asp:Repeater> | ||||
|
投稿日時: 2005-06-09 10:19
プロパティのプルダウンに表示されないのは、正常な挙動です。
ちなみに実行時にItemDataBoundでインスタンスを取得することができます。 _________________ 「伝える」とは「人に云う」と書く。 http://d.hatena.ne.jp/NAL-6295/ | ||||
|
投稿日時: 2005-06-09 10:33
サンプル http://www.atmarkit.co.jp/fdotnet/dotnettips/132nesteddg/nesteddg.html | ||||
|
投稿日時: 2005-06-09 13:06
どうもありがとうございます。
Repeater1 の ItemDataBound で下記の通り FindControl を使用することで インスタンスを取得することができました。 DataGrid dg = (DataGrid)e.Item.FindControl("DataGrid1"); |
1