- PR -

ObjectListで画像表示

投稿者投稿内容
グロース
会議室デビュー日: 2006/08/08
投稿数: 9
投稿日時: 2007-01-18 23:34
お世話になります。

Mobileで商品リストの表示を行おうとしています。
商品の一覧をObjectListに保存し、詳細画面を開いたときに
商品コード、商品名称と共に画像を表示させたいと思ったのですが、
うまくいきません。(そもそも無理???)
いろいろ検索してみたのですが、それらしき文献もないので
ご存知の方がおられましたら、ご教授お願い致します。
DataGridのItemTemplateのようなものは存在しないのでしょうか?
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-01-19 10:53
Mobile 開発の開発環境は?
ObjectList ってことは VisualStudio2003 の ASP.NETモバイルWebアプリケーションかな。
ObjectList にも ItemTemplate ありますよ。

テンプレートの定義の仕方が独特なので MSDN 等で確認することをお勧めします。
デバイスフィルタを作って、フィルタごとにどのスキーマを使うかを定義した後にテンプレートの設定をします。
http://msdn2.microsoft.com/ja-jp/library/6c1x9zwd(VS.80).aspx

_________________
かるあ のメモスニペット
がーす
会議室デビュー日: 2007/01/19
投稿数: 3
投稿日時: 2007-01-19 18:31
便乗して、質問です。

テンプレート内のコントロールを、ItemDataBindイベントで取得する方法をご存じでしょうか?

コードビハインド側のMenuList_ItemDataBindで、Link1を見つけそのリンクの
NavigateUrlを設定したいのですが。
【参考コード】
----------------------------------------------

<mobile:List ID="MenuList" Runat="server" OnItemDataBind="MenuList_ItemDataBind">
   <DeviceSpecific>
      <Choice>
         <ItemTemplate>
            <mobile:Link ID="Link1" Runat="server">Link</mobile:Link>
         </ItemTemplate>
      </Choice>
   </DeviceSpecific>
</mobile:List>

----------------------------------------------
がーす
会議室デビュー日: 2007/01/19
投稿数: 3
投稿日時: 2007-01-19 19:36
自己レスです。

MenuList_ItemDataBindのイベント引数e.ListItem.FindControlで、
画面に配置したリンクを見つけようとしましたが、nullなのでダメでした。

代案として、リンクを動的に生成して追加しようと考えたのですが、
e.ListItemに追加しても意味がないようです。

this.Form1.Controlsに追加すれば追加されますが、
画面上のコントロールに追加されるだけで、意味がありません。

WebGridやRepeaterのようには利用できないのでしょうか・・・。


【参考コード】
--------------------------------------------------------
  protected void Page_Load(object sender, EventArgs e)
  {
    DataTable menu = new DataTable();
    menu.Columns.Add("url_id", typeof(int));
    menu.Columns.Add("url", typeof(string));
    menu.Rows.Add(new object[] { 1, "/m/A.aspx" });
    menu.Rows.Add(new object[] { 2, "/m/B.aspx" });
    menu.Rows.Add(new object[] { 3, "/m/C.aspx" });

    this.MenuList.DataSource = menu;
    this.MenuList.DataBind();
  }

  protected void MenuList_ItemDataBind(object sender, ListDataBindEventArgs e)
  {
    //バイドされるデータから情報を取得する。
    DataRowView drv = (DataRowView)e.DataItem;
    string url = drv["url"].ToString();
    string id = drv["url_id"].ToString();

    //この結果はnullなので、利用できない
    //Link foundLink = (Link)e.ListItem.FindControl("Link1");
    //foundLink.NavigateUrl = url;
    //foundLink.Text = id;


    //代案として、動的に生成したリンクを利用する
    Link createdLink = new Link();
    createdLink.NavigateUrl = url;
    createdLink.Text = id;

    //e.ListItemに追加しても、追加されない。
    //e.ListItem.Controls.Add(createdLink);

    //フォームに追加すると、追加されるがバインドしている意味がない
    this.Form1.Controls.Add(createdLink);
  }
--------------------------------------------------------
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-01-20 18:50
DataBinder.Eval() でじかに書き出してあげるのはどうだろう。
コード:
    <mobile:Link ID="Link1" Runat="server" Text='<% # DataBinder.Eval(((MobileListItem)Container).DataItem, "url_id") %>' NavigateUrl='<% # DataBinder.Eval(((MobileListItem)Container).DataItem, "url") %>'></mobile>


_________________
かるあ のメモスニペット
がーす
会議室デビュー日: 2007/01/19
投稿数: 3
投稿日時: 2007-01-22 10:08
かるあさん、ありがとうございます。
DataBinder.Eval()で解決しました。

バインド時にウェブ(モバイル)コントロールのプロパティを
DataBinder.Evalで設定できることを初めて知りました。
いままでも、コードビハンド側でわざわざFindControlして設定して
いましたので。
無知は罪ですね(^^;
グロース
会議室デビュー日: 2006/08/08
投稿数: 9
投稿日時: 2007-01-23 17:29
かるあさん、お答え頂きありがとうございます。
まずは、お詫びを。
昨日まで風邪により寝込んでしまいました。
返信が遅くなり申し訳ございません。

開発はバージョン1.1で行っています。
なさけないのですが、VisualStudioはありません。

本日MSDNを読んでみたのですが、かなり難しそうですね。
web.configとかも修正しなければいけないようですし。
まだ読み始めたばかりですが、じっくり腰を据えて読んで
いかないと把握できないようです。
簡単なサンプルなどは無いでしょうか?ロジックを見ながら
読んでいった方が理解し易いと思うのですが。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-01-24 00:53
引用:

グロースさんの書き込み (2007-01-23 17:29) より:

簡単なサンプルなどは無いでしょうか?ロジックを見ながら
読んでいった方が理解し易いと思うのですが。


上にある がーす さん とのやり取りは参考になりませんでしたか?

モバイルWeb開発の場合、結局描画の部分に関してはフィルタ頼みになるので、
難しくても頑張って読み解いていったほうがいいです。
前に(@IT かな・・・)で記事はあったと思いますので検索してみてください。

ここまで書いておいてなんですが、
フィルタのメンテナンスや結局テンプレート内にHTMLをガリガリ書くことになったりするので、
今から新規で開発するとするとあまりお勧めはできませんよ。
マイクロソフトからの次のリリースもなさそうだし。。。
_________________
かるあ のメモスニペット

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