我如何创建一个面板的内容为每个MySQL获取的变量

本文关键字:变量 获取 MySQL 一个 何创建 创建 | 更新日期: 2023-09-27 18:15:38

我已经在网上搜索了几个小时来找到解决这个问题的方法。我使用MySqlDataReader从数据库中获取一些变量,我想创建一个foreach循环,为我获取的每个id创建一个HyperLink。在这个HyperLink中,我需要根据每个id的等级设置Image,为名称设置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();

我如何创建一个面板的内容为每个MySQL获取的变量

你可以在你的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();

您好,感谢您的回复。我按照你的建议使用了Repeater,但数据没有显示。在浏览器的Inspect element选项中,没有具有Label1或HyperLink1的ID的控制器。我在Repeaters上做了一些关于MySql连接的搜索,但没有运气…这是我最新的代码:

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获取的第一行,而有2行具有相同的id。我试图创建另一个<ItemTemplate>标签相同的第一个,但没有运气…