如何管理具有非固定列号的转发器

时间:2011-06-01 12:16:19

标签: asp.net repeater

我正在使用repeater绑定所有表数据。

我的表字段是Name,Option1,Option2 ...... Option12。共有13列。 Option列的值是动态的。有时候它包含Option1和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个选项。

3 个答案:

答案 0 :(得分:3)

试试这个对你有帮助,

  

                                                                          ID                                                         名称                                                         命令                                          

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

  

背后的代码如下:

     

使用System;   使用System.Collections.Generic;   使用System.Data;   使用System.Data.SqlClient;   使用System.Configuration;   使用System.Web;   使用System.Web.Security;   使用System.Web.UI;   使用System.Web.UI.WebControls;   使用System.Web.UI.WebControls.WebParts;   使用System.Web.UI.HtmlControls;

使用System.Text; 使用System.Xml; 使用System.Xml.Schema;

公共类客户 {     private int id;     public int ID     {         得到{return this.id; }         设置{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; }
}

}

公共类订单 {     private int orderID;     public int OrderID     {         get {return this.orderID; }         设置{this.orderID = value; }     }     私有字符串orderName;     公共字符串OrderName     {         get {return this.orderName; }         设置{this.orderName = value; }     }     private decimal orderCost;     公共小数OrderCost     {         得到{return this.orderCost; }         设置{this.orderCost = value; }     } }

public partial class _Default:System.Web.UI.Page {     protected void Page_Load(object sender,EventArgs e)     {         List orders1 = new List();         订单order1 = new Order();         order1.OrderID = 1;         order1.OrderName =“百事可乐”;         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

答案 1 :(得分:1)

在ItemDataBound事件中,您可以检查项目并隐藏它们,或者可能将它们从转发器中删除。

以下是如何使用此事件的示例:

http://www.codeguru.com/csharp/.net/net_asp/tutorials/article.php/c12065

答案 2 :(得分:0)

您应该使用Repeater的ItemDataBound Event来检查空列,如果您发现该列具有值,那么如果列没有值,您可以显示它们,那么您可以将其visible属性设置为false。
There is a very good example for you. You must look at it.