2011-06-01 11 views
5

Estoy utilizando un repetidor para vincular todos los datos de la tabla.Cómo administrar el repetidor con el número de columna no fijo

Y mis campos de tabla son Nombre, Opción1, Opción2 ... Opción12. Todo en total 13 columnas. los valores para las columnas de Opción son dinámicos. algunas veces contiene dos valores para la Opción1 y 2 y algunas veces la cifra se puede cambiar entre 1 y 12.

Ahora quiero mostrar solo aquellas columnas de opción que contienen algún valor.

De esta manera: -

Name 
Option1 
Option2 
Option8 

Name 
Option10 
Option12 
Option4 
Otion3 

Name 
Option5 
Option7 

Name 
Option3 
Option2 
Option5 
Option12 
Option4 

Medios opciones no son fijos. ¿Cómo puedo gestionar esto con el control Repeater? PARA que pueda mostrar un valor como este. Por favor sugiérame la forma correcta de resolver esto.

Gracias de antemano.

Primera Edición

<%# !Equals(DataBinder.Eval(Container.DataItem, "Option1")%> 
.... 
<%# !Equals(DataBinder.Eval(Container.DataItem, "Option12")%> 

Supongamos que tengo este 12 Opciones como este. Ahora, si mi fuente de datos contiene solo valores de la Opción 1 a 5, entonces necesito que el resto de las 6 a 12 opciones no se muestren en el repetidor.

+0

He actualizado mi respuesta comprobarlo. – jams

Respuesta

3

Prueba esto es útil para usted,

ID Nombre órdenes

<ItemTemplate> 
     <tr style="background-color:FFECD8"> 
      <td valign="top"> 
       <%# DataBinder.Eval(Container.DataItem, "ID") %> 
      </td> 
      <td valign="top"> 
       <%# DataBinder.Eval(Container.DataItem,"Name") %> 
      </td> 
      <td> 
      <asp:Repeater Runat="server" ID="ordersRepeater" EnableViewState="false" 
       DataSource='<%# DataBinder.Eval(Container.DataItem, "Orders") %>'> 
       <ItemTemplate> 
        <%# DataBinder.Eval(Container.DataItem, "OrderID") %> - <%# DataBinder.Eval(Container.DataItem, "OrderName") %> - <%# DataBinder.Eval(Container.DataItem, "OrderCost")%> 
        <br /> 
       </ItemTemplate> 
      </asp:Repeater> 
      </td> 
     </tr> 
    </ItemTemplate> 


    <FooterTemplate> 
    </Table> 
    </FooterTemplate> 

El código subyacente es el siguiente:

using System; usando System.Collections.Generic; usando System.Data; usando System.Data.SqlClient; usando System.Configuration; usando System.Web; usando System.Web.Security; usando System.Web.UI; usando System.Web.UI.WebControls; usando System.Web.UI.WebControls.WebParts; usando System.Web.UI.HtmlControls;

usando System.Text; usando System.Xml; usando System.Xml.Schema;

clase pública Cliente { private int id; public int ID { get {return this.id; } set {this.id = value; }}

private string name; 
public string Name 
{ 
    get { return this.name; } 
    set { this.name = value; } 
} 

public List orders; 
public List Orders 
{ 
    get { return this.orders; } 
    set { this.orders = value; } 
} 

}

clase pública Solicitar {private int orderID; public int OrderID { get {return this.orderID; } set {this.orderID = value; } } cadena privada orderName; public string OrderName { get {return this.orderName; } set {this.orderName = value; } } orden decimal privadaCost; decimal público OrderCost { get {return this.orderCost; } set {this.orderCost = value; }} }

pública parcial de clase _Default: System.Web.UI.Page { protegida void Page_Load (object sender, EventArgs e) { Lista solicitudes1 = nueva lista(); Orden order1 = new Order(); order1.OrderID = 1; order1.OrderName = "Pepsi"; order1.OrderCost = 12.5M; orders1.Add (order1);

Order order2 = new Order(); 
    order2.OrderID = 2; 
    order2.OrderName = "7up"; 
    order2.OrderCost = 12M; 
    orders1.Add(order2); 

    List orders2 = new List(); 
    Order order3 = new Order(); 
    order3.OrderID = 4; 
    order3.OrderName = "Food"; 
    order3.OrderCost = 12.5M; 
    orders2.Add(order3); 

    List customers = new List(); 
    Customer c1 = new Customer(); 
    c1.ID = 1; 
    c1.Name = "Bilal"; 
    c1.Orders = orders1; 
    customers.Add(c1); 

    Customer c2 = new Customer(); 
    c2.ID = 2; 
    c2.Name = "potterosa"; 
    c2.Orders = orders2; 
    customers.Add(c2); 


    this.Repeater1.DataSource = customers; 
    this.Repeater1.DataBind(); 
} 

protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 

} 

}

Ir a través de siguiente enlace

http://forums.asp.net/t/1118175.aspx/1

+0

Gracias por responder, creo que esto me ayudará. Vamos a verificar. –

Cuestiones relacionadas