使用 dataList 循环链接按钮和标签
Looping Linkbutton and Label using dataList
我正在尝试使用 DataList
和 ItemTemplate
搜索数据库。
我只想在 linkbutton
和 label
中逐行循环数据库中的数据。
我是新手
提前致谢
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);
}
我正在尝试使用 DataList
和 ItemTemplate
搜索数据库。
我只想在 linkbutton
和 label
中逐行循环数据库中的数据。
我是新手 提前致谢
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);
}