我正在为我的网页制作评论框, 我已经设计了表单来获取用户名和注释并将其存储在数据库表中。我不知道如何在页面上呈现该数据。通过迭代表并随后在页面上创建段落或在页面上创建标签。
我在C#中使用LINQ to SQL。 请告诉我如何在网页上的数据库中呈现注释或者链接到教程
答案 0 :(得分:2)
我建议您学习关于和 以使用数据控件,这些数据控件旨在用于多行 的情况以相同格式返回重复数据,例如你现在的(评论)。 示例控件:
GridView
ListView
Repeater
这里详细介绍每个控件不会回答你的问题,但很重要;无论如何,这是你可以轻松在线研究的东西。
对于这种情况,我建议您使用ListView:
ListView
- 您希望评论框位于ItemTemplate
内的ListView
代码 <p>
来布置每个评论将遵循的格式(因此,您可以在评论周围添加<%# Eval("ColumnName") %>
段标记如果列被绑定(例如实际评论),则使用代码: <% %>
为了说清楚,上面的代码在服务器上运行,因为它是一个内联服务器标记:.aspx文件中的代码,由服务器运行。此代码由标记#
末尾开头的百分比符号表示,由VS(Visual Studio)以黄色突出显示。存在不同类型的内联服务器标签,由第一个符号显示。在这种情况下,使用散列ItemTemplate
,这意味着标记中的代码是绑定表达式。对于上面提到的所有数据控件的含义,您将使用此符号将数据与内联服务器标记绑定。
例如(在<asp:ListView ID="LV_Comments" runat="server">
<ItemTemplate>
<b><%# Eval("Username") %></b>
<br />
<i><%# Eval("WhenPosted") %></i>
<p><%# Eval("Comment") %></p>
</ItemTemplate>
</asp:ListView>
上使用更多语义布局):
DataSource
Page_Load
设置为您的Comments表。我建议您创建一个方法来执行此操作,并在using (var db = new DataContext())
{
LV_Comments.DataSource = from x in db.DT_Comments select new {
Username = x.Name,
x.Comment,
WhenPosted = x.PostTime
};
LV_Comments.DataBind();
}
事件上调用该方法。并在添加新注释后调用该方法,因为如果默认情况下没有回发,则只绑定数据(见下文)。设置DataSource示例:
DataContext
您需要更改列的名称和SomeName = x.ColumnName
。请注意我已声明ListView
的位置,我只是在<%# Eval("SomeName") %>
更改我引用的列名称(此代码:protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
ListViewMethod();
}
private void ListViewMethod()
{
// ListView data binding code here
}
protected void NewCommentButton_Click(object sender, EventArgs e)
{
// Your code to add new comment
ListViewMethod();
}
);你不必这样做,就像你可以看到我没有使用评论专栏。
如何将此代码与方法和事件一起使用:
EmptyItemTemplate
请记住了解有关何时以及如何使用这些datacontrol的更多功能的更多信息。就像你没有评论一样,你可能想告诉用户这个。因此,您可以在ListView
标记内使用<EmptyItemTemplate>
<i>No comments have been posted</i>
</EmptyItemTemplate>
(但在ItemTemplate之外),如下所示:
{{1}}
答案 1 :(得分:1)
我们假设您有CommentsTable
列:
你的LinqToSql数据上下文是myDataContext,你可以这样做:
myDataContext db = new myDataContext();
var commentsData = db.CommentsTable.ToList();
string html=string.Empty;
foreach(var item in commentsData)
{
html+="<div class='property-row'><div class='username'>"+item.Username+"</div>";
html+="<div class='notice'>"+item.DateCreated.ToString("mm-dd-yyyy hh:mm")+"</div>"
html+="<div class='comment'>"+item.Comment+"</div>";
}
Div1.InnerHtml= html;
现在你可以通过适当地装饰设计师的类来控制你的部分的外观,即用户名行和它下面的注释 即。
.property-row
{
position:relative;
width:100%;
background-color:#CCCCCC;
border:1px solid Black;
}
.username
{
position:relative:
padding:2px;
top:2px;
font-size:0.8em;
color:#333333;
text-decoration:underline;
}
.comment
{
position:relative;
padding:2px;
margin:2px;
font-size:1em;
color:black;
}
.notice
{
font-size:0.7em;
}
答案 2 :(得分:0)
使用HtmlGenericControl你可以做到这一点。请参阅下面的示例
using System.Web.UI.HtmlControls;// add this namespace
HtmlGenericControl MyPtag = new HtmlGenericControl("p");
MyPtag.InnerText = "Your content inside P Tag";
Placeholder1.Controls.Add(MyPtag);
您必须将其添加到占位符,如上所示,Placeholder1。