@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

GridView を Excelへ出力すると 「Formタグの内側に・・・」といわれる

1
投稿者投稿内容
なぼな
ベテラン
会議室デビュー日: 2004/08/04
投稿数: 61
投稿日時: 2006-02-28 16:54
大変お世話になっております。


Visual Studio2005 VBにてWebアプリを作成しています。
データベースはSQLServer2000です。


以前こちらでご教授いただきました
DataGridをエクセルへ出力(表示)する方法ですが、
環境をVS2005にバージョンアップしたところ、
なりまして問題が発生しております。
旧バージョンのVisual Studioでは下記ソースで表示することが可能でした。
DataGrid1.DataBind()
Response.Clear()
Response.Buffer = True
Response.ContentType = "application/vnd.ms-excel"
Response.Charset = ""
Me.EnableViewState = False
Dim tw As New System.IO.StringWriter()
Dim hw As New System.Web.UI.HtmlTextWriter(tw)
DataGrid1.RenderControl(hw)
Response.Write(tw.ToString())
Response.End()
このソースを、VS2005で動作させると(DataGridからGridViewへコントロールは変更しています)、
「'GridView' のコントロール 'GridView1' は、runat=server を含む form タグの内側に置かなければ成りません。」
といってきます。
Webデザインのソースを見ても
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 略>
<Columns>
        ・
        ・
        ・
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 略"></asp:SqlDataSource>
</div>
</form>
</body>

そんな間違っているとは思えないのですが・・・
何か仕様が変わったのでしょうか?

ご存知の方ご教授よろしくお願いします。

Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2006-03-01 08:00
エラーの回避策は2種類あります。

以下のサンプルを参考にしてください。

http://aspspider.net/AkioKasai/Goto.aspx?id=060217-1
http://aspspider.net/AkioKasai/Goto.aspx?id=060223-1
_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
なぼな
ベテラン
会議室デビュー日: 2004/08/04
投稿数: 61
投稿日時: 2006-03-01 10:01
Accessさま、ご教授ありがとうございます。

参考にさせていただき、動作確認することができました!
ありがとうございました!

でも、Excel側での枠線が消えてしまうのは変わらないのですね・・・
なぼな
ベテラン
会議室デビュー日: 2004/08/04
投稿数: 61
投稿日時: 2006-03-08 14:12
お世話になっております。
Access様前回はありがとうございました。
しかし、VS2005より別のメッセージが表示されるようになり
困っております。どのたかご存知の方いらっしゃいましたらお願いします。

以前の確認では、ご教授いただきましたサイトから
> Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)
> ' このOverridesは以下のエラーを回避するために必要です。
> ' 「GridViewのコントロールGridView1は、runat=server を含む
> ' form タグの内側に置かなければ成りません」
> End Sub
を記述し、動作確認しました。
ちなみに、エクセルへ出力する処理はこのときも(今も)WebFormの
Page_loadイベントに記述しています。よって、上記Overridesの記述も
同WebFormのaspx.vbファイルに記述しております。

今現在おきていることは、
「RegisterForEventValidation は Render(); の実行中にのみ呼び出されることができます。」
とVS2005のデバックモードでメッセージが表示されます。
ご教授いただきましたOverridesのモジュールを削除すると、一番最初に質問させて
いただきましたメッセージが表示されます。
ということは、ご教授いただきました内容は効果があって別の問題が発生していると
考えられるのでしょうか・・・

ご教授よろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)