Tengo un <asp:Repeater>
en mi página web, que está vinculado a un conjunto de datos creado por programación.ASP.NET Repeater y DataBinder.Eval
El propósito de este repetidor es crear un índice desde A-Z, que, al hacer clic, actualiza la información en la página.
El repetidor tiene un botón de enlace, así:
<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>
El conjunto de datos se crea de la siguiente manera:
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;
}
Sin embargo, cuando corro a la página, una "conversión especificada no es válida excepción "se lanza en Text='<%#DataBinder.Eval(Container.DataItem,"letter")'
. No tengo idea de por qué, intenté convertir manualmente a String con (String), probé un método ToString(), lo intenté todo.
Además, si en el depurador agrego un reloj para DataBinder.Eval (Container.DataItem, "letter"), el valor que devuelve es "A", que según yo, debería estar bien para Text Property.
EDIT:
Aquí es la excepción:
System.InvalidCastException era controlada por el código de usuario
mensaje = "la conversión especificada no es válida." Fuente = "App_Web_cmu9mtyc"
StackTrace: en ASP.savecondition_aspx .__ DataBinding__control7 (Object sender, EventArgs e) en E: \ Documents and Settings \ Fernando \ Mis documentos \ Visual Studio 2008 \ Projects \ mediTrack \ mediTrack \ saveCondition. aspx: línea 45 en System.Web.UI.Control.OnDataBinding (EventArgs e) en System.Web.UI.Control.DataBind (Boolean raiseOnDataBinding) en System.Web.UI.Control.DataBind() en Sistema .Web.UI.Control.DataBindChildren() InnerException:
será muy apreciada Cualquier consejo, gracias
EDITAR 2: ¡Reparado! El problema no estaba en las etiquetas de texto o CSS, pero en la etiqueta Habilitado, tuve que convertirlo a un valor booleano. El problema era que la excepción fue señalado en la etiqueta de texto, no sé qué
¿está seguro de la excepción está en la "letra" y no el "activado" parte? –
¡estabas en lo cierto! fue eso, nunca intenté eliminar solo el Eval de la propiedad habilitada ... ¡gracias! – Fernando
Deseo que MS nunca ponga enlaces en la página. Sería mucho mejor si SOLO pudieras hacerlo desde el código subyacente para evitar estas preguntas. – Phill