Webページのコメントボックスを作成しています。ユーザー名とコメントを取得してデータベーステーブルに保存するフォームを設計しました。そのデータをページにレンダリングする方法がわかりません。テーブルを反復処理してからページに段落を作成するか、ページにラベルを作成します。
C#でLINQtoSQLを使用しています。Webページのデータベースまたはチュートリアルへのリンクにコメントを表示する方法を教えてください
Webページのコメントボックスを作成しています。ユーザー名とコメントを取得してデータベーステーブルに保存するフォームを設計しました。そのデータをページにレンダリングする方法がわかりません。テーブルを反復処理してからページに段落を作成するか、ページにラベルを作成します。
C#でLINQtoSQLを使用しています。Webページのデータベースまたはチュートリアルへのリンクにコメントを表示する方法を教えてください
複数の行を返すことができ、現在のデータ(コメント)のようにデータが同じ形式で繰り返される場合に使用するように設計されたデータコントロールについて、その使用方法を学ぶことをお勧めします。コントロールの例:
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
ここで、L2S(LINQ to SQL)を使用してコメントテーブルに設定する必要があります。これを行うためのメソッドを作成し、Page_Load
イベントでメソッドを呼び出すことをお勧めします。また、新しいコメントを追加した後でメソッドを呼び出します。これは、デフォルトでポストバックがない場合にのみデータをバインドするためです(以下を参照)。DataSourceの例の設定:
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();
}
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
に、タグの内側ListView
(ただしItemTemplateの外側)を使用します。
<EmptyItemTemplate>
<i>No comments have been posted</i>
</EmptyItemTemplate>
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;
}
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.