使用 dataList 循环链接按钮和标签

Looping Linkbutton and Label using dataList

我正在尝试使用 DataListItemTemplate 搜索数据库。

我只想在 linkbuttonlabel 中逐行循环数据库中的数据。

我是新手 提前致谢

DataSet ds = new DataSet();
DataTable dt = new DataTable();

dt.Columns.Add(new DataColumn("Description", typeof(string)));
dt.Columns.Add(new DataColumn("Auctionno", typeof(string)));
dt.Columns.Add(new DataColumn("Location", typeof(string)));
SqlCommand cmd = new SqlCommand("select * from Auction_Upload where Keyword = '" + TextBox1.Text + "'", con);

con.Open();
SqlDataReader dr = cmd.ExecuteReader();

if(dr.Read())
{
    DataRow dc = dt.NewRow();
    dc["Description"] = dr["Description"].ToString();
    dc["Auctionno"] = dr["Auctionno"].ToString();
    dc["Location"] = dr["Location"].ToString();
    dt.Rows.Add(dc);
}

DataList1.DataSource = dt;
DataList1.DataBind();

aspx代码:

<asp:DataList ID="DataList1" runat="server" Width="600">
    <ItemTemplate> 
        <br /> 
        <asp:LinkButton ID="LinkButton1" Font-Names="Raleway,sans-serif" Font-Size="15" runat="server" Text='<%#Eval("Auctionno") %>' /> 
        <br /> 
        <asp:Label ID="Label1" Font-Size="12" Font-Names="Raleway,sans-serif" runat="server" Text='<%#Eval("Description") %>' />
    </ItemTemplate> 
</asp:DataList> 

正如您在评论中所说,您现有的查询 returns 只有一行,所以这就是您的 DataList 仅显示一行的原因。

如果您想从数据库中获取所有行,请更改查询并全部获取它们

select * from Auction_Upload /*just remove the WHERE clause*/

其他一切都很好。

将 if 更改为 While,您将获得行,因为您一次只读取一行 datareader.Read()

while(dr.Read())
{
    DataRow dc = dt.NewRow();
    dc["Description"] = dr["Description"].ToString();
    dc["Auctionno"] = dr["Auctionno"].ToString();
    dc["Location"] = dr["Location"].ToString();
    dt.Rows.Add(dc);
}