我在网上搜索了几个小时才找到解决方案。我使用MySqlDataReader
从数据库中获取一些变量,我想创建一个foreach
循环,为我提取的每个id创建一个HyperLink
。在此HyperLink
中,我需要设置Image
,具体取决于每个ID的等级,名称为Label
,等级名称为Label
。
这是CodeBehind:
connString = ConfigurationManager.ConnectionStrings["ConnString"].ToString();
conn = new MySqlConnection(connString);
queryStr = "SELECT * FROM db.table WHERE account_id=?id LIMIT 5";
cmd = new MySqlCommand(queryStr, conn);
cmd.Parameters.AddWithValue("?id", IdKeeper.Value);
conn.Open();
reader = cmd.ExecuteReader();
reader.Read();
foreach (string "id fetched" in PanelID)
{
//Stuck here!!!
}
reader.Close();
conn.Close();
答案 0 :(得分:0)
您可以在aspx页面上使用Repeater。
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table border="1">
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("dbColumnName") %>'></asp:Label>: </td>
<td>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("dbColumnName") %>'>Click Me</asp:HyperLink></td>
</tr>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>
然后将数据直接绑定到代码后面的Repeater,而不需要foreach循环。
SqlDataReader reader = cmd.ExecuteReader()
Repeater1.DataSource = reader;
Repeater1.DataBind();
答案 1 :(得分:0)
您好,感谢您的回复。我按照您的建议使用了Repeater
,但未显示数据。在我的浏览器的Inspect element
选项中,没有带有Label1或HyperLink1的ID
的控制器。我在MySql
上搜索了Repeaters
个连接,但没有运气......这是我的最新代码:
ASPX:
<asp:Panel runat="server" CssClass="main-content-content" ID="AllCharacters">
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<td><%# DataBinder.Eval(Container.DataItem, "col1") %></td>
<td><%# DataBinder.Eval(Container.DataItem, "col2") %></td>
<td><%# DataBinder.Eval(Container.DataItem, "col3") %></td>
</ItemTemplate>
</asp:Repeater>
</asp:Panel>
C#:
queryStr = "SELECT * FROM db.table WHERE id=?id LIMIT 1";
cmd = new MySqlCommand(queryStr, conn);
cmd.Parameters.AddWithValue("?id", IdKeeper.Value);
conn.Open();
reader = cmd.ExecuteReader();
reader.Read();
Repeater1.DataSource = reader;
Repeater1.DataBind();
reader.Close();
<强>更新强>
在评论reader.Read();
代码后,代码有效,但仅针对reader
提取的第一行,而有id
的代码为<ItemTemplate>
。我尝试创建另一个compile 'info.guardianproject.netcipher:netcipher-okhttp3:2.0.0-alpha1'
标记与第一个相同但没有运气...