(1)a.vbというコードを保存します。(内容はコメント欄を参照)
(2)C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322
上に前項のソースを置いて,
vbc /target:library /reference:"System.Windows.Forms.dll" /reference:"System.dll" /reference:"System.Data.dll" /reference:"System.XML.dll" /reference:"System.Drawing.dll" a.vb
とコンパイルします。
a.dllが生成されます。
(3)Apacheの公開ディレクトリに,前項のa.dllを配置します。
同じフォルダ上に,以下のHTMLを配置します。
hoge.html
----
<html>
<body>
<object id="fuga" height="300" width="300"
classid="a.dll#SampleNameSpace.SampleDataGrid"></object>
</body>
</html>
----
(4)IEで,http://localhost/hoge.html にアクセスします。
(5)データグリッドが表示されてほしかったのですが,
http://f.hatena.ne.jp/language_and_engineering/20100711191940
のような画面が出るだけでした・・・・。
要は,http://d.hatena.ne.jp/language_and_engineering/20100705/p1 のDataGrid版をやりたいのですが,
そのためにa.vbのコード内容をどう修正すべきか,ご教授願えますでしょうか。
よろしくお願いします。
コメント欄掲載のプログラムについて、悪いのはDataTableが初期化されていないところだけのようです。
が、それとは別の問題も、、、
----
■a.vb
Imports System.Data Namespace SampleNameSpace Public Class SampleControl Inherits System.Windows.Forms.DataGrid Public Sub New() Dim dtSet As DataSet = New DataSet("hoge") Dim dtTable As DataTable = dtSet.Tables.Add("t_hoge") dtTable.Columns.Add("ID", GetType(System.Int32)) dtTable.Columns.Add("NAME", GetType(System.String)) dtTable.Rows.Add(New Object() {1, "aaaaaa"}) dtTable.Rows.Add(New Object() {2, "bbbbbb"}) dtTable.Rows.Add(New Object() {3, "cccccc"}) Me.SetDataBinding( dtSet, "t_hoge" ) End Sub End Class Public Class SampleForm Inherits System.Windows.Forms.UserControl Dim ctl As New SampleControl() Public Sub New() Me.Controls.Add(Me.ctl) End Sub End Class End Namespace
■a.htm
<html> <body> <object id="fuga1" classid="a.dll#SampleNameSpace.SampleControl"></object> <object id="fuga2" classid="a.dll#SampleNameSpace.SampleForm"></object> </body> </html>
SampleControlクラスをHTMLに貼ってもデータは表示されません。
SampleFormクラスをHTMLに貼るとデータは表示れます。
詳しく調べたわけではありませんが、DataGridクラスは、System.Windows.Forms.ContainerControlの派生クラスの上に貼らないと正しく動作できないようです。
本当にありがとうございます。ご提示いただいたコードのおかげで,ブラウザ上でDataGridを動作させることができました。いま,動作する実物を見て感動しております。情報が少ないにもかかわらず調査してくださったことを感謝します。