У меня есть простой DataList, который получает текстовые данные из одного поля в базе данных и отображает его по горизонтали на ярлыке lblProductName. Это отлично работает. В моей базе данных у меня 4 записи, и она отображает 1 строку с 4 столбцами данных в таблице в DataList. Отлично.C# ASP.Net - DataList Изменение изображений на лету
Более твердая часть. На основе другого запроса/логики я хочу отобразить изображение под меткой lblProductName в DataList; либо 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();
код/логика, чтобы получить изображение будет выглядеть примерно так ...
Как-то для каждого lblProductName, который получает связанный в DataList я должен был бы выполнить следующий запрос. Если запрос ниже возвращает 0 в ProductCount, я бы установил 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 для названия продукта Я ищу. Поэтому я должен выполнить вторичный запрос, чтобы проверить это. – Andy
Лучше создать запрос со всей необходимой информацией. Поэтому создайте запрос с подзапросом (или использованием привязки) для получения всех необходимых данных. Затем измените элементы шаблона. Подведем итог: принесите все данные, которые вам нужны в первом запросе. –