質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

4309閲覧

GridView内でのCalendarExtender使用時のエラーについて

syes

総合スコア10

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2016/02/26 04:36

###前提・実現したいこと
VB.NET、ASP、AJAX等にてWEBシステム開発を行っているのですが、
GridView内の<ItemTemplate>として複数要素を表示する中に、
CalendarExtenderが含まれることが要因のようで以下のエラーが発生してしまいます。

以下記載のソースの太字の部分がカスタムコントロールでCalendarExtenderを使用した箇所になるのですが、
Visibleがtrueになるときに、エラーが発生します。

現状のソース状況・改修ボリュームを踏まえ、基本的にはCalendarExtenderを使用したままとしたいのですが、
本エラーの回避策をご教示いただけないでしょうか?

###発生している問題・エラーメッセージ
System.InvalidOperationException {"Extender control 'WxsDateBox1_CalendarExtender' cannot extend ''. Extender controls of type 'AjaxControlToolkit.CalendarExtender' cannot extend controls of type 'System.Web.UI.WebControls.Label'."}

###ソースコード

<body class="left"> <form id="form1" runat="server" <div id ="cb_body_main"> <p class="sv_title"> <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
--省略-- <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> --省略-- <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="3" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" width="800px"> <FooterStyle BackColor="White" ForeColor="#000066" /> <Columns> <asp:TemplateField HeaderText="No"> <EditItemTemplate> <asp:TextBox ID="TextBox6" runat="server" Text='<%# Bind("xxxx") %>'></asp:TextBox> </EditItemTemplate> <ItemStyle HorizontalAlign="Right" Width="50px" /> <HeaderStyle HorizontalAlign="Center" /> <ItemTemplate> <asp:Label ID="Label5" runat="server" Text='<%# eval("xxxx") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> --省略-- <asp:TemplateField HeaderText="次"> <EditItemTemplate> <asp:TextBox ID="TextBox7" runat="server"></asp:TextBox> </EditItemTemplate> <ItemStyle Width="140px" /> <ItemTemplate> <asp:Label ID="Label6" runat="server" Text='<%# eval("xxxx") %>'></asp:Label> **<cc1:wxsDateBox ID="WxsDateBox1" runat="server" AutoPostBack="False" CalendarButton="False" DateCalendarType="西暦" DateInputFormat="年月日" DateLabelFormat="Japanese" DateText="" Height="24px" InputMode="True" ScrollButton="False" Visible='<%# XXX_FLG %>' />** <asp:ImageButton ID="ImageButton1" runat="server" CommandArgument='<%# eval("xxx") & "-" & eval("yyy") & "-" & eval("zzz") %>'> CommandName="XXXX" ImageUrl="~/Imanges/icon/hoge.png" Visible='<%# YYY_FLG %>' /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </ContentTemplate> </asp:UpdatePanel> --省略--

###補足情報(言語/FW/ツール等のバージョンなど)
VB.net
ASP.NET
AjaxControlToolkit
VS2005

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

シンプルな画面を作成して確認しましたところ、GridViewのItemTemplate内にCalenderExtenerコントロールを含むユーザーコントロールを配置しても動作しました。

例外内容的には、カスタムコントロール内のCalenderExtenderコントロールのTargetControlIDの値が指定できないコントロール(Label)のIDを指しているように見える例外メッセージに見受けられます。

投稿2016/02/28 16:43

nakit

総合スコア410

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syes

2016/02/29 07:37

ご丁寧にサンプル画面を制作してご確認いただきまことにありがとうございます。 おかげさまで、ご指摘の「TargetControlID」を中心に確認したところ、 ご指摘通り、GridView内にある場合は、想定とは異なるIDを取得してセットしておりました。 以下に抜粋した該当箇所のロジックを記載させていただきます。 変更前:clsCalendarExtender.TargetControlID = Split(txtDay.UniqueID, "$")(1)              ↓ 変更後:clsCalendarExtender.TargetControlID = Split(txtDay.UniqueID, "$")(Split(txtDay.UniqueID, "$").Length - 1) Splitして2番目の要素をセットしてましたが、 GridView内ではGridView関連のIDが付加されていたため、 想定の最後のID要素が取得できていませんでした。 本当に適切なご指摘ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問