如何为每个MySQL获取的变量创建一个包含内容的Panel

时间:2016-10-31 19:54:20

标签: c# mysql asp.net foreach reader

我在网上搜索了几个小时才找到解决方案。我使用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();

2 个答案:

答案 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' 标记与第一个相同但没有运气...