0

Webページのコメントボックスを作成しています。ユーザー名とコメントを取得してデータベーステーブルに保存するフォームを設計しました。そのデータをページにレンダリングする方法がわかりません。テーブルを反復処理してからページに段落を作成するか、ページにラベルを作成します。

C#でLINQtoSQLを使用しています。Webページのデータベースまたはチュートリアルへのリンクにコメントを表示する方法を教えてください

4

3 に答える 3

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ここで、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>
于 2013-03-03T10:50:39.057 に答える
1

CommentsTable列があると仮定しましょう:

  • Id int
  • ユーザー名varchar(50)
  • コメントnvarchar(5000)
  • DateCreated DateTime

そして、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;
}
于 2013-03-03T07:40:05.403 に答える
1

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.

于 2013-03-03T07:29:33.500 に答える