【发布时间】:2015-11-19 14:32:56
【问题描述】:
我有一个简单的 DataList,它从数据库的一个字段中获取文本数据,并将其水平显示在 lblProductName 标签中。这很好用。在我的数据库中,我有 4 条记录,它在 DataList 的表中显示 1 行和 4 列数据。完美的。
较难的部分。基于另一个查询/逻辑,我想在 DataList 的 lblProductName 标签下显示图像; switchon.jpg 或 switchoff.jpg。这我不知道该怎么做,因为我将 DataList 与原始查询绑定到数据库。
这是我的数据列表。
<asp:DataList ID="dlstProductDataList" runat="server" RepeatColumns = "5" CellPadding = "10" HorizontalAlign ="Center" RepeatDirection="Horizontal" Width="100%">
<ItemTemplate>
<div class="ProductLinks">
<asp:Label ID="lblProductName" runat="server" Text='<%# Eval("ProductName") %>' /><br />
<asp:Image ID="imgProductStatus" runat="server"></asp:Image>
</div>
</ItemTemplate>
</asp:DataList>
这是我将数据加载到 DataList 中的代码。
var cnnString = ConfigurationManager.ConnectionStrings["TaktBoardsConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(cnnString);
SqlCommand cmd = new SqlCommand();
string sql = "SELECT [ProductID], [ProductName] FROM [Product] WHERE [ProductID] <> 1 ORDER BY [ProductID]";
cmd.CommandText = sql;
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
cmd.Connection.Open();
dlstProductDataList.DataSource = cmd.ExecuteReader();
dlstProductDataList.DataBind();
cmd.Connection.Close();
cmd.Connection.Dispose();
获取图像的代码/逻辑如下所示...
对于绑定在 DataList 中的每个 lblProductName,我必须以某种方式执行以下查询。如果下面的查询在 ProductCount 中返回 0,那么我会将 imgProductStatus 设置为 switchoff.jpg。如果它 > 0,那么它将被设置为 switchon.jpg。对于每个 lblProductName,我都知道 ProductID(根据上面的第一个查询)。
sql = "SELECT COUNT([ProductID]) AS ProductCount FROM TaktBoard WHERE [ProductID] = ??????? AND CONVERT (date, [BoardDate]) = CONVERT (date, GETDATE())";
如果有人能引导我朝着正确的方向前进,将不胜感激!
安迪
【问题讨论】:
-
嗨柯克,不幸的是,数据库的设置方式还有另一个表 TaktBoard,我必须检查是否有任何已保存的记录具有我正在搜索的产品名称的 productID .所以我必须做一个辅助查询来检查。
-
最好使用您需要的所有信息创建一个查询。因此,创建一个带有子查询的查询(或使用绑定)来获取您需要的所有数据。然后更改模板元素。总结一下:在第一次查询时带上您需要的所有数据。