DotNetNuke 対応ホスティングサービスに、「at link 専用サーバサービス」を追加
DotNetNuke.jp 掲示板は、すべての DotNetNuke ユーザーのための情報共有の場です。単に質問・回答の場ではありませんし、回答義務もございません。運営メンバーも含め、DotNetNuke を日々学んでいる状況です。質問をする場合は、まずインターネットなどで自分自身でお調べいただき、その情報を共有する事をこころがけてください。
お世話になります。 度々すみませんが、どうにもよくわからないことがあり質問させてください。
やりたいことは、タブ内にあるモジュールの一覧を取得することです。
まずは、現在のタブの情報を
Dim tabInfo As DotNetNuke.Entities.Tabs.TabInfo = DotNetNuke.Common.Globals.GetPortalSettings.ActiveTab()
で取得し、
For Each moduleInfo As DotNetNuke.Entities.Modules.ModuleInfo In tabInfo.Modules() Label1.Text += moduleInfo.ModuleTitle & "<br/>" Next
とすると、Labelにはそのタブに含まれるモジュールの一覧が表示されます。
次に、同じく現在のタブ(TabIdは60とします)の情報を今度は
Dim TabController As New DotNetNuke.Entities.Tabs.TabController Dim tabInfo As DotNetNuke.Entities.Tabs.TabInfo = TabController.GetTab(60)
で取得し、全く同じように
とすると、実行時にモジュールのエラーが表示されます。
同じタブの情報を取得しているつもりなのですが、なぜでしょうか? ちなみに後者でtabInfo.TabIDなどでタブの情報を取得してみるとちゃんと60で取得できていますので、 TabIDの指定が違うなどの理由ではないと考えております。
もしかすると初歩的な勘違いで恥ずかしい質問をしているのかもしれませんが、 よろしくお願いします。
戻り値を見て頂くとわかりますが GetTabで取得した時は、 modules プロパティがありませんので、エラーになります。 tabid を指定してモジュール情報を取得する方法を参考に掲載します。 Dim Modules As List(Of DotNetNuke.Entities.Modules.ModuleInfo) Modules = CBO.FillCollection(Of DotNetNuke.Entities.Modules.ModuleInfo) _ (CType(DataProvider.Instance().GetTabModules(60), IDataReader)) For Each moduleInfo As DotNetNuke.Entities.Modules.ModuleInfo In Modules Label1l.Text += moduleInfo.ModuleTitle.ToString & "<br />" Next
河原さま。
いつもありがとうございます。
お返事が遅くなってすみません。無事取得できました!どうもありがとうございます。
ただ、提示いただいたコードがほとんど理解できないのがうーむ・・ですね(汗) VBが初めてというのもありますが、(Of ・・・)というのは恐らくGenericですよね。 CBOって??DotNetNukeのライブラリ?検索したところCustom Business Objectの略でしょうか?
とりあえず取得できましたので、今後頂いたコードを解読していきたいと思いますが、 これまでほとんどが、わかりやすいスタイルで取得できていたので、 かなり違うところに戸惑っております。まだまだ勉強すべきことは多いようです。
どうもありがとうございました。