我是中级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
}