我正在使用ASP.NET和SQL。
我在表格中有3列。我应该以这样的方式填充数据:
Date: 2014-09-22
Description1: xyz (this should be bold)
Description2 pqrs (normal paragraph)
在水平标记之后应出现另一个数据
Date: 2013-09-22
Description1: abcd (this should be bold)
Description2 qwe (normal paragraph)
我可以在GridView
中填充数据,但我不知道如何以这种方式格式化数据。我是ASP.NET的新手。
建议我使用一些工具或链接,或者在编写代码时提供帮助。
答案 0 :(得分:0)
在你的aspx / ascx中你需要使用asp:Repeater
控件,如下所示:
<asp:Repeater runat="server">
<ItemTemplate>
<p>Date: <asp:Literal runat="server" ID="litDate"></asp:Literal></p>
<p>Description 1: <strong><asp:Literal runat="server" ID="litDesc1"></asp:Literal></strong></p>
<p>Description 2: <asp:Literal runat="server" ID="litDesc2"></asp:Literal></p>
</ItemTemplate>
<SeparatorTemplate>
<hr />
</SeparatorTemplate>
</asp:Repeater>
在代码隐藏中,您应该将一组对象绑定到此Repeater
,并处理OnDataBinding
事件,您应该为asp:Literal
控件分配正确的值:
class DataItem
{
public DateTime Date { get; set; }
public string Desc1 { get; set; }
public string Desc2 { get; set; }
}
protected void Page_Load(object sender, EventArgs e)
{
rptData.DataSource = new[]
{
new DataItem { Date = new DateTime(2013, 9, 30), Desc1 = "Test Desc 1", Desc2 = "Test Desc 2" },
new DataItem { Date = new DateTime(2013, 9, 30), Desc1 = "Test Desc 3", Desc2 = "Test Desc 4" }
};
rptData.ItemDataBound += OnItemDataBind;
rptData.DataBind();
}
protected void OnItemDataBind(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
var data = e.Item.DataItem as DataItem;
var dateLiteral = e.Item.FindControl("litDate") as Literal;
dateLiteral.Text = data.Date.ToString("yyyy-MM-dd");
var desc1Literal = e.Item.FindControl("litDesc1") as Literal;
desc1Literal.Text = data.Desc1;
var desc2Literal = e.Item.FindControl("litDesc2") as Literal;
desc2Literal.Text = data.Desc2;
}
}