プログラムで作成されたデータセットにバインドされている私のWebページに<asp:Repeater>
があります。ASP.NETリピータとDataBinder.Eval
このリピーターの目的は、クリックするとページの情報を更新するA-Zから索引を作成することです。
リピータはそうのようなリンクボタンがあります。
<asp:LinkButton ID="indexLetter" Text='<%#DataBinder.Eval(Container.DataItem,"letter")%>'
runat="server" CssClass='<%#DataBinder.Eval(Container.DataItem, "cssclass")%>'
Enabled='<%#DataBinder.Eval(Container.DataItem,"enabled")%>'></asp:LinkButton>
データセットは次のように作成されます、しかし
protected DataSet getIndex(String index)
{
DataSet ds = new DataSet();
ds.Tables.Add("index");
ds.Tables["index"].Columns.Add("letter");
ds.Tables["index"].Columns.Add("cssclass");
ds.Tables["index"].Columns.Add("enabled");
char alphaStart = Char.Parse("A");
char alphaEnd = Char.Parse("Z");
for (char i = alphaStart; i <= alphaEnd; i++)
{
String cssclass="", enabled="true";
if (index == i.ToString())
{
cssclass = "selected";
enabled = "false";
}
ds.Tables["index"].Rows.Add(new Object[3] {i.ToString(),cssclass,enabled });
}
return ds;
}
を、私はページを実行すると、「指定されたキャストは有効ではありません例外 "がText='<%#DataBinder.Eval(Container.DataItem,"letter")'
にスローされます。私はなぜ、私は手動で文字列(String)でキャストしようとしています、私はToString()メソッドを試してみました、私はすべてを試してみました。
また、デバッガでDataBinder.Eval(Container.DataItem、 "letter")のウォッチを追加すると、返される値は「A」になります。これは私にとってTextプロパティにとっては問題ありません。
編集:ここでは
は例外です:
System.InvalidCastExceptionのは=ユーザーコード
メッセージによって、未処理だった "指定されたキャストは有効ではありません。"プロジェクト\ mediTrack \ mediTrack \ saveCondition \ \ DocumentsとSettings \フェルナンド\マイ ドキュメントのVisual Studio \ 2008:ソース= "App_Web_cmu9mtyc"
のStackTrace:電子内ASP.savecondition_aspx .__ DataBinding__control7(オブジェクト送信者、EventArgsの電子)で 。 aspx:行45 at System.Web.UI.Control.OnDataBinding(EventArgs e) at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) at System.Web.UI.Control.DataBind() at System .Web.UI.Control.DataBindChildren()InnerException:
アドバイスをよろしくお願いします。
編集2: 修正済み!この問題はTextタグやCSSタグにはありませんでしたが、Enabledタグではブール値にキャストしなければなりませんでした。問題は、例外がテキストタグで合図されたということでした、これは任意の違いを確認するかどう
ですか? –
あなたは正しいzarembistyだった!それは、私はEvalを有効なプロパティから削除しようとしたことはありません...ありがとう! – Fernando
私はMSがページにバインドしないことを望みます。あなたがこれらの質問を避けるためにコードビハインドからのみ行うことができれば、ずっと良いでしょう。 – Phill