Estoy utilizando un ASP.NET/C# DataList.

 <asp:DataList ID="EquipmentList" RepeatColumns="5".....  

Tengo la siguiente línea dentro de la <ItemTemplate> etiqueta:

 <a href=""`><%# {I want to put something here but dont know how} %> </a>  

En mi código detrás tengo un NameValueCollection variable que contiene todas las cadenas:

 NameValueCollection myListofStrings = //calling a method here that populates myListofStrings   
this.EquipmentList.DataSource =  myListofStrings;  
this.EquipmentList.DataBind();

Por favor alguien me puede decir cómo enlazar este NameValueCollection variable a mi DataList etiqueta en el margen de utilidad? También un conocimiento adicional sobre cómo enlazar un DataList a un DataSet, sqldatareader, IList<> sería de gran ayuda.

Gracias a todos. pero por ahora lo que puedo escribir dentro de la etiqueta si vamos a decir que tengo que enlazar a un 1NameValueCollection1 variable, como en mi caso. No tiene propiedades o columnas, de manera que no puedo escribir nada como Eval("propertyname") que es la respuesta que la mayoría de aquí me dio. Es así como yo lo soy de unión de un array de cadenas.

Así que lo que escribo ahora?

InformationsquelleAutor zack | 2010-10-26

4 Comentarios

  1. 5

    Por favor alguien me puede decir cómo enlazar
    este NameValueCollection variable
    mi datalist etiqueta en el margen de utilidad? También
    conocimientos adicionales sobre cómo enlazar una
    datalist para un conjunto de datos, sqldatareader,
    IList<> sería de gran ayuda. Thannks

    Declaro mi List<ComplexObject> en mi código subyacente (es decir … en un método adjunto a un OnClick) y, a continuación, voy a enlazar es así:

    private void DoDataGetAndBind() {
      List<ComplexObject> complexObjects = _dataAccessLayer.GetComplexObjectsMethod(parameter1, parameter2, sortParameter);
      datalist1.DataSource = complexObjects;
      datalist1.DataBind();
    }

    Ahora, por favor, entender cómo simplificado mi código es, yo no he puesto ninguna comprobaciones de errores (por ejemplo, si la base de datos caído o se devuelve ningún resultado) y yo no definir los parámetros o la ComplexObject (porque supongo que usted entiende cómo es que esas cosas de trabajo).

    En el .aspx de la página, me permitiría definir dentro de la ItemTemplate de la DataList de control de los campos donde yo <%# Eval('ComplexObjectFieldOneName') %> o <%# Eval('ComplexObjectFieldTwoName') %> (etc).

    Por lo tanto, dado un

    public class ComplexObject {
      public string MyFirstField {get;set;}
      public string MySecondField {get;set;}
    }

    Me gustaría definir los campos de la .aspx como <%# Eval('MyFirstField') %> y <%# Eval('MySecondField') %>

    Aceptar, que era bastante largo de explicar, así que espero que de verdad no ayuda.


    Otro punto: también puede utilizar ObjectDataSources (o las clases derivadas como SqlDataSource, etc) y hacer todos los enlaces en la .aspx, asumiendo correctamente construido clases de objetos. Algo a tener en cuenta.

    • gracias. pero por ahora lo que puedo escribir dentro de la etiqueta si vamos a decir que tengo que enlazar a un NameValueCollection variable, como en mi caso. No tiene propiedades o columnas, de manera que no puedo escribir nada como Eval(«propertyname»), que es la respuesta que la mayoría de aquí me dio. Es así como yo lo soy de unión de un array de cadenas. Así que lo que escribo ahora?
    • ya te dio la respuesta. Usted Eval('Value') o Eval('Name') de acuerdo a lo que usted quería.
    • Lo dicho. No, No puedes. Así que en lugar, usted debe tratar de encontrar una forma diferente de almacenamiento de su información, o debe convertir justo antes de que usted necesita para consumir.
    • Ver en este enlace forums.asp.net/t/1016703.aspx
    • ‘Nombre’ error – Demasiados caracteres en caracteres literales.
    • Mis disculpas. Puedo ver que yo realmente no puedo asumir que usted sabe que un 'value' en C# significa un char y para las cadenas, uno debe usar "value" … en otras palabras, Acceptable : '|', "|", "||" ~~ Not Acceptable : '||'
    • Yo no entiendo la diferencia entre una cadena dentro de «» y char en el interior «. El enlace que has publicado anteriormente funciona para mí. Muchas gracias.
    • lol, pensé que hiciste 😉 … O al menos yo esperaba que usted hizo. Acabo de encontrarme a mí mismo el intento de evitar que en los ejemplos. Tal vez no debería. Sólo se ve más limpio para usar una sola cita. Me alegro de que el enlace ayudado.

  2. 0

    <%# %> es el enlace de datos sintaxis.

    Que se suelen hacer algo como:

    <%# Eval("PropertyName") %>

    Esto define una forma de unión de una propiedad/columna denominada PropertyName en el origen de datos.

    En tu caso, creo que se puede hacer ya sea el Nombre o Valor, dado que esas son las propiedades públicas de NameValueCollection.

    Usted también puede hacer una de dos vías de enlace de datos mediante:

    <%# Bind("PropertyName") %>
    • ‘Nombre’ error – Demasiados caracteres en caracteres literales.
  3. 0

    Enlazar el control datalist origen a la vista de datos o tabla de datos.

    Datalist.Datasource = DataView;

       <ITEMTEMPLATE>
        <ASP:LABEL id="lblField" runat="server" Font-Bold="true">
        <%# DataBinder.Eval(Container.DataItem, "DATAITEMNAME") %>
        </ASP:LABEL>
        </ITEMTEMPLATE>
    • no hay DATAITEMNAME como se puede ver que estoy enlace a un namevaluecollection. Es sólo una colección de cadena. No hay ninguna propiedad que enlazar. He actualizado mi pregunta
  4. 0
    <%# (EquipmentList.DataSource as NameValueCollection)[Container.DataItem as string] %>

    El origen de datos es la realidad de la colección que son vinculantes para nosotros, pero tenemos que convertir. Y por supuesto el Contenedor.DataItem es la CLAVE, en el que tengo que convertir a una cadena para que pueda ser utilizado.

    • En general, las respuestas son mucho más útiles si se incluye una explicación de lo que el código está destinado a hacer, y por eso que resuelve el problema sin la introducción de otros. (Este post se ha marcado por lo menos un usuario, presumiblemente porque pensaban que una respuesta sin explicación debe ser eliminado.)

Dejar respuesta

Please enter your comment!
Please enter your name here