我正在使用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个选项。
答案 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)
{
}
}
浏览以下链接
答案 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.