- - PR -
DataBinder.Evalのキャストエラーについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-09-28 02:02
はじめまして、DataBinder.Evalに関して質問がございます。
以下のコードにて、データをXMLより読み込み各プロパティに 値を設定しようと思っているのですが、Widthや、Hieght の設定の際に キャストエラーが発生してします。 どのようにしたら、エラーを解消できるのでしょうか。 [XMLファイル] <?xml version="1.0" encoding="shift-jis" ?> <menus> <menu> <id>testid</id> <name>testname</name> <url>#</url> <imgurl>./images/test.gif</imgurl> <width>105px</width> <height>26px</height> </menu> </menus> [ソース] <asp:HyperLink id=hyperlinkNavigationBar runat="server" ImageUrl='<%# DataBinder.Eval(Container.DataItem, "imgurl") %>' Text='<%# DataBinder.Eval(Container.DataItem, "name") %>' NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "url") %>' Width='<%# DataBinder.Eval(Container.DataItem, "width") %>' Height='<%# DataBinder.Eval(Container.DataItem, "height") %>'> </asp:HyperLink> [問題個所] 以下の場合など。 <Width='<%# DataBinder.Eval(Container.DataItem, "width") %>' それでは、ご回答よろしくお願い致します。 |
|
投稿日時: 2004-09-28 10:51
こんにちは
以下の点についても書いたほうが返答がつきやすいと思います。 ・具体的なエラーの内容やメッセージは? ・どのような手順でバインドしているのか? |
|
投稿日時: 2004-09-29 00:57
申し訳ありません情報足らずでした、以下の読み込み手順およびエラーコードから
何か原因がわかるでしょうか。 よろしくお願い致します。 [XMLファイル] <?xml version="1.0" encoding="shift-jis" ?> <menus> <menu> <id>testid</id> <name>testname</name> <url>#</url> <imgurl>./images/test.gif</imgurl> <width>105px</width> <height>26px</height> </menu> </menus> ---ソース---- DataSet dsMenu = new DataSet(); FileStream fsFile; StreamReader srXml; try { // xmlファイルのパス ***** 上記XMLファイルパスです。 ******** if (FilePath == null) { return; } // xmlファイルを取得 if(FilePath.IndexOf("\\") != -1) { fsFile = new FileStream(FilePath,FileMode.Open,FileAccess.Read); } else { fsFile = new FileStream(Server.MapPath(FilePath),FileMode.Open,FileAccess.Read); } // xmlファイル読みDataSetに登録 srXml = new StreamReader(fsFile); dsMenu.ReadXml(srXml); fsFile.Close(); DataView dvMenu = new DataView(dsMenu.Tables[0]); // 表示 this.datalistNavigationBar.DataSource = dvMenu; this.datalistNavigationBar.DataBind(); } [ASPX側ソース] <asp:HyperLink id=hyperlinkNavigationBar runat="server" ImageUrl='<%# DataBinder.Eval(Container.DataItem, "imgurl") %>' Text='<%# DataBinder.Eval(Container.DataItem, "name") %>' NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "url") %>' Width='<%# DataBinder.Eval(Container.DataItem, "width") %>' Height='<%# DataBinder.Eval(Container.DataItem, "height") %>'> </asp:HyperLink> [問題個所] 以下の場合など。 <Width='<%# DataBinder.Eval(Container.DataItem, "width") %>' ----エラー----- error CS0030: 型 'string' を型 'System.Web.UI.WebControls.Unit' に変換できません。 |
|
投稿日時: 2004-09-29 01:31
すいません、自己解決しました。
UnitConvert クラスを用いて、文字列からUnit型に変換すれば問題なくとおりました。 お騒がせしました。 <%@ Import Namespace="System.Web.UI.WebControls" %> <script runat =server > UnitConverter m_convert = new UnitConverter(); </script> <asp:HyperLink id=hyperlinkNavigationBar runat="server" ImageUrl='<%# DataBinder.Eval(Container.DataItem, "imgurl") %>' Text='<%# DataBinder.Eval(Container.DataItem, "name") %>' NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "url") %>' Width='<%# m_convert.ConvertFromString(DataBinder.Eval(Container.DataItem, "width")) %>' Height='<%# m_convert.ConvertFromString(DataBinder.Eval(Container.DataItem, "height")) %>'> </asp:HyperLink> |
1