ASP.NET 遍历数据表列并为每个项目编写一个复选框


ASP.NET loop through datatable column and write a checkbox for each item

我是中级C#级别的 ASP.NET 新手,之前我写了一个PHP项目。我现在试图在 ASP.NET 中获得类似的效果。

我正在使用什么:该项目是 C# ASP.NET Empty web application 。我正在使用带有SP1的Visual Studio 2010。MSSQL 2008 R2

我想做的是使用 foreach 将 HTML 代码添加到 ASP 文件的特定内容区域中。

这就是我会在 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>

但是,我想为从数据库中检索到的每个pizza添加一个listitem,而不是硬编码,pizza的名称存储在数组中。我将如何使用循环并添加 HTML 行,就像我在上面的 PHP 示例中所做的那样?

我假设你的披萨列表有两列,即 ID 和 PizzaName。
并且您有一种方法可以从数据库中获取披萨列表,如披萨类中的 GetList 一样。
首先,您应该在 aspx 端向单选按钮列表控件添加两个属性。它们是 DataValueField 和 DataTextField。数据绑定所需的这些属性。

阿斯普克斯侧

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

代码后面 Side(侧)

private void FillPizzaList()
    {
        DataTable dtList = Pizza.GetList();     
        this.RadioButtonPizzaList.DataSource = dtList;
        this.RadioButtonPizzaList.DataBind();
    }

如果要获取选定的项值,可以使用此代码获取

this.RadioButtonPizzaList.SelectedValue

注意:如果在页面加载事件中填写单选按钮列表,请不要忘记检查是回发。

if ( !IsPostBack )
 this.FillPizzaList();

最后,我的问题的答案是使用 c# 创建表并添加行,并在单元格中添加内容。当我环顾四周时,这里有一个问题得到了解答,但并不完全。所以如果你看到这个,你可以适应它。

我已经从使用复选框更改为简单地向单元格区域添加文本,但要回答我最初的问题,可以执行我对文本框所做的操作并选择要添加复选框的单元格,或者干脆不使用表格和循环复选框到您想要的区域。

最后,我将表添加到在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
}