- PR -

TreeNode変換エラー

1
投稿者投稿内容
吉備
会議室デビュー日: 2003/01/29
投稿数: 10
お住まい・勤務地: 東京都
投稿日時: 2003-01-29 17:39
はじめまして。
VB.NETでTreeViewを作成しています。

TreeNodeに親ノード、子ノードとセットしていく時に、変換エラーが出てしまいます。
ヘルプや他のサイトを参考にさせていただいているのですが、かなり初期で躓いています。

「型 'String' の値を 'Microsoft.Web.UI.WebControls.TreeNode' に変換できません。」

Me.TreeView1.Nodes.Add(rowA("Category").ToString)ソースの*部分の、
'(rowA("Category").ToString)'
部分で出ています。
お力をお貸しいただけますでしょうか。。

---

Imports Microsoft.Web.UI.WebControls
Imports System.Data.OleDb
Imports System.Data.SqlClient

Dim rowA As DataRow
Dim rowB As DataRow
Dim nodX As TreeNode

'TypeAテーブルとTypeBテーブルをリレーションしてTypeListを作成しています。
親ノード=TypeA.Category
子ノード=関連付けされたTypeList.Name

For Each rowA In myDataset.Tables("TypeA").Rows
  nodX = Me.TreeView1.Nodes.Add(rowA("Category").ToString) *
  For Each rowB In rowA .GetChildRows("TypeList")
    nodX .Nodes.Add(rowB ("Name").ToString) *
  Next
Next
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-01-30 08:41
 ヘルプに書いてありますが・・・

>>「型 'String' の値を *'Microsoft.Web.UI.WebControls.TreeNode'*
>> に変換できません。」

 VS.NETの目次で、「Web開発→Web Development (英語)→WebControls→Platform Reference→Microsoft.Web.UI.WebControls Assembly Reference→Classes→TreeNodeCollection→Methods→Add」をたどってください。Addメソッドのオーバーライドに、Stringを受けるものはありません。くれぐれも、「Windows.Forms」のTreeNodeCollectionではありませんので、ご注意。

#私はMSDN Libraryをバインドしているので、パスが少し違うかもしれません。
#そのときはキーワードに「Microsoft.Web.UI.WebControls」を入れてください。
吉備
会議室デビュー日: 2003/01/29
投稿数: 10
お住まい・勤務地: 東京都
投稿日時: 2003-01-30 11:22
早速の返答ありがとうございました。

ヘルプを見て、検討したのですが理解できず、本当におはずかしい限りです。
String型が受けられないというところまではなんとなく解ったのですが、
パラメータに指定するTreeNodeオブジェクトをどのように指定するのか、検討が付きません。

度々恐れ入ります。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-01-30 19:56
>>String型が受けられないというところまではなんとなく解ったのですが、
>>パラメータに指定するTreeNodeオブジェクトをどのように指定するのか、
>>検討が付きません。

 ヘルプからはわかりませんね、ホント。先にTreeNodeオブジェクトを作っておいて、それをAddメソッドに渡せばいいのでしょうが、TreeNodeのコンストラクタに関する記述が見つかりませんor見つけられませんねぇ??

 Microsoft.Web.UI.Controlsをプロジェクトに追加する方法がわからないので不確かなことしかいえませんが、
dim tn as new microsoft.web.ui.controls.treenode(
と入れると、どんな候補が出てきますか?
newがStringを受け入れるなら
Add(New Web.UI.Controls.TreeNode("Label"))
とやればいいし、受け入れないなら
dim tn as new Web.UI.Controls.TreeNode()
tn.NodeData = "Label"
TreeNodeCollection.Add(tn)
とやればいい、と思います。
吉備
会議室デビュー日: 2003/01/29
投稿数: 10
お住まい・勤務地: 東京都
投稿日時: 2003-01-31 11:10
Jittaさん、いつも返信をいただきまして、ありがとうございます。

newがStringを受け入れないようなので、こちらの方法で、検討しました。

dim tn as new Web.UI.Controls.TreeNode()
tn.NodeData = "Label"
TreeNodeCollection.Add(tn)

Microsoft.Web.UI.WebControlsは、WebControls Version 1.0をMSのサイトからダウンロードして使っています。
助けていただいて、動くようになったソースは、

Imports Microsoft.Web.UI.WebControls

Dim nodX As TreeNode
Dim n1As TreeNode

n1 = New TreeNode()
n1.Text = nodX("Category").ToString
TreeView1.Nodes.Add(n1)

大変参考になりました。ありがとうございます。
1

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