Ich habe eine <asp:Repeater>
in meiner Webseite, die an einen programmatisch erzeugten Datensatz gebunden ist.ASP.NET Repeater und DataBinder.Eval
Der Zweck dieses Repeaters besteht darin, einen Index von A-Z zu erstellen, der beim Anklicken die Informationen auf der Seite aktualisiert.
Der Repeater hat eine Link-Taste wie folgt:
<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>
Der Datensatz auf folgende Weise erstellt:
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;
}
Allerdings, wenn ich die Seite ausführen, wird ein „angegebene Ziel ungültig ist Ausnahme "ist in Text='<%#DataBinder.Eval(Container.DataItem,"letter")'
geworfen. Ich habe keine Ahnung warum, ich habe versucht, manuell zu String mit (String) zu werfen, ich habe versucht, eine ToString() -Methode, ich habe alles versucht.
Wenn ich im Debugger eine Überwachung für DataBinder.Eval (Container.DataItem, "letter") hinzufüge, ist der Wert, den es zurückgibt, "A", was meiner Meinung nach für die Texteigenschaft in Ordnung sein sollte.
EDIT:
Hier ist die Ausnahme: "angegebene Ziel ungültig ist"
System.InvalidCastException unhandled war durch Benutzercode
Message = Source = "App_Web_cmu9mtyc"
Stacktrace: bei ASP.savecondition_aspx .__ DataBinding__control7 (Object sender, EventArgs e) in e: \ Dokumente und Einstellungen \ Fernando \ Eigene Dateien \ Visual Studio 2008 \ Projects \ mediTrack \ mediTrack \ saveCondition. aspx: Leitung 45 bei System.Web.UI.Control.OnDataBinding (EventArgse) bei System.Web.UI.Control.DataBind (Boolean raiseOnDataBinding) bei System.Web.UI.Control.DataBind() bei System .Web.UI.Control.DataBindChildren() Innerexception:
werden Jede Beratung sehr geschätzt, danke
BEARBEITEN 2: Behoben! Das Problem war nicht in den Text- oder CSS-Tags, aber im Enabled-Tag musste ich es auf einen booleschen Wert umwandeln. Das Problem war, dass die Ausnahme im Text-Tag signalisiert wurde, weiß ich nicht, warum
sind Sie sicher, dass die Ausnahme auf dem „Brief“ und nicht der „freigegeben“ Teil? –
Sie hatten Recht zarembisty! Es war das, ich habe nie versucht, nur das Eval aus dem aktivierten Eigentum zu entfernen ... Danke! – Fernando
Ich wünschte, MS würde niemals die Seite binden. Wäre so viel besser, wenn du es NUR aus dem Code-Behind tun könntest, um diese Fragen zu vermeiden. – Phill