- PR -

DataBinder.Evalのキャストエラーについて

1
投稿者投稿内容
kupa
会議室デビュー日: 2003/04/28
投稿数: 7
投稿日時: 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") %>'

それでは、ご回答よろしくお願い致します。
Ten.
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 67
投稿日時: 2004-09-28 10:51
こんにちは

以下の点についても書いたほうが返答がつきやすいと思います。

・具体的なエラーの内容やメッセージは?

・どのような手順でバインドしているのか?
kupa
会議室デビュー日: 2003/04/28
投稿数: 7
投稿日時: 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' に変換できません。

kupa
会議室デビュー日: 2003/04/28
投稿数: 7
投稿日時: 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

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