0

私は中級 C# レベルの ASP.NET を初めて使用し、以前は PHP プロジェクトを作成しました。私は今、ASP.NET で同様の効果を得ようとして立ち往生しています。

私が使用しているもの: プロジェクトは C# ASP.NETEmpty web applicationです。Visual Studio 2010 SP1 を使用しています。MSSQL 2008 R2

私がやりたいことは、foreach を使用して ASP ファイルの特定のコンテンツ領域に HTML コードを追加することです。

これは私がphpで行うことです:

foreach ($library as $book)
{
    print "<a href=\"bookpage.php?id=".$book[book_id]"";      
    print "<h3>".$book[book_author]."</h3>";
    print " <p>".$book[book_blurb]."</p>";
}

これは私がASPで試したことです:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">

    <asp:RadioButtonList ID="RadioButtonPizzaList" runat="server">
            <asp:ListItem Text="Margerita" />
            <asp:ListItem Text="Hawaain" />
            <asp:ListItem Text="Meat Supreme" />
    </asp:RadioButtonList>
</asp:Content>

しかし、ハードコーディングする代わりに、データベースから取得したlistitemfor eachを追加したいと思います。名前は配列に格納されます。上記のPHPの例で行ったように、ループを使用してHTML行を追加するにはどうすればよいですか?pizzapizza

4

2 に答える 2

1

ピザのリストには、Id と PizzaName という 2 つの列があるとします。
また、Pizza クラスの GetList という名前のデータベースからピザのリストを取得するメソッドがあります。
まず、aspx 側の 2 つの属性をラジオ ボタン リスト コントロールに追加する必要があります。それらはDataValueFieldDataTextFieldです。これらの属性は、データ バインディングに必要です。

Aspx 側

 <asp:RadioButtonList ID="RadioButtonPizzaList" DataValueField="Id" DataTextField="PizzaName"  runat="server">            
 </asp:RadioButtonList>

コードビハインドサイド

private void FillPizzaList()
    {
        DataTable dtList = Pizza.GetList();     

        this.RadioButtonPizzaList.DataSource = dtList;
        this.RadioButtonPizzaList.DataBind();
    }

選択したアイテムの値を取得したい場合は、このコードで取得できます

this.RadioButtonPizzaList.SelectedValue

注: ページ読み込みイベントでラジオボタン リストを埋める場合は、チェックがポストバックであることを忘れないでください。

if ( !IsPostBack )
 this.FillPizzaList();
于 2013-11-03T20:47:06.083 に答える
0

結局、私の問題に対する答えは、c# を使用してテーブルを作成し、行を追加し、セルにコンテンツを追加することでした。このあたりを見回していたときの質問の 1 つは、ある程度答えられましたが、完全ではありませんでした。したがって、これを見れば、それを適応させることができます。

チェックボックスの使用からセル領域にテキストを追加するだけに変更しましたが、元の質問に答えるために、テキストボックスで行ったことを実行して、チェックボックスを追加するセルを選択するか、単にテーブルを使用せずにチェックボックスをループすることができます希望のエリアへ。

最後に、asp コードで作成済みの div にテーブルを追加します。

public partial class _Default : System.Web.UI.Page
{
Database doDatabase = new Database();//custom class for querying a database
ArrayList textboxNames = new ArrayList();//just to make life easier
ArrayList pizzaNames = new ArrayList();//just to make life easier

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {

    }
        this.FillPizzaList();
}

private void FillPizzaList()
{
    int count = 1;

    string query = "select FoodID, FoodName, 'R' + Convert(char(10), FoodPrice)[Food Price], rtrim(FoodDesc)[FoodDesc] from tblFood";
    doDatabase.Do_SQLQuery(query);

    Table tablePizza = new Table();
    TableRow tr = new TableRow();
    TableCell tc = new TableCell();

    for (int c = 0; c < 4; c++)
    {
        tc = new TableCell();

        if (c == 0)
        {
            tc.Width = new Unit("15%");
            tc.Text = "<h3>Pizza Name</h3>";
        }
        else if (c == 1)
        {
            tc.Text = "<h3>Pizza Description</h3>";
        }
        else if (c == 2)
        {
            tc.HorizontalAlign = HorizontalAlign.Center;
            tc.Width = new Unit("15%");
            tc.Text = "<h3>Pizza Price</h3>";
        }
        else if (c == 3)
        {
             tc.Width = new Unit("12%");
            tc.Text = "<h3>Pizza Quantity</h3>";
        }

        tr.Cells.Add(tc);

    }
    tablePizza.Rows.Add(tr);

    foreach (DataRow dr in doDatabase.dataTbl.Rows)
    {
        tr = new TableRow();

        for (int c = 0; c < 4; c++)
        {
            tc = new TableCell();

            if (c == 0)
            {
                pizzaNames.Add(dr["FoodName"].ToString());
                tc.Text = dr["FoodName"].ToString();
            }
            else if (c == 1)
            {
                tc.Text = dr["FoodDesc"].ToString();
            }
            else if (c == 2)
            {
                tc.HorizontalAlign = HorizontalAlign.Center;
                tc.Text = dr["Food Price"].ToString();
            }
            else if (c == 3)
            {
                TextBox MyTextBox = new TextBox();

                MyTextBox.ID = "Quantity" + count;
                textboxNames.Add("Quantity" + count);

                MyTextBox.Text = "0";
                tc.Controls.Add(MyTextBox);
                count++;
            }

            tr.Cells.Add(tc);

        }
        tablePizza.Rows.Add(tr);


    }

    pizzaMenu.Controls.Add(tablePizza);//add table to div

}
于 2013-11-04T17:08:39.653 に答える