如何管理列数不固定的中继器

5

我正在使用repeater来绑定表格数据。

我的表格字段是名称、选项1、选项2...选项12。总共13列。 选项列的值是动态的。有时候选项1和2会包含两个值,有时候数字在1到12之间变化。

现在我想只显示那些包含某些值的选项列。

像这样:

Name
Option1
Option2
Option8

Name
Option10
Option12
Option4
Otion3

Name
Option5
Option7

Name
Option3
Option2
Option5
Option12
Option4

意味着选项不是固定的。我该如何使用Repeater控件来管理它。 这样它就可以像这样显示值。请建议我解决这个问题的正确方法。

提前致谢。

第一次编辑

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

假设我有这样的12个选项。现在,如果我的数据源只包含选项1到5的值,则我需要在重复器上不显示其余6到12个选项。

我已经更新了我的答案,请查看。 - jams
3个回答

3
尝试一下,这对你有帮助,

ID(编号) Name(名称) Orders(订单)

  <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>

以下是代码: using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Text; using System.Xml; using System.Xml.Schema; public class Customer { 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; }
}

}

public class Order { private int orderID; public int OrderID { get { return this.orderID; } set { this.orderID = value; } } private string orderName; public string OrderName { get { return this.orderName; } set { this.orderName = value; } } private decimal orderCost; public decimal OrderCost { get { return this.orderCost; } set { this.orderCost = value; } } }

public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { List orders1 = new List(); Order 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)
{

}

}

请点击以下链接

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


谢谢回复,我认为这会对我有所帮助。让我来检查一下。 - Pankaj Mishra

1

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接