Я сейчас работаю над проектом, в котором необходимо отобразить набор галерей. Цель здесь - просто отобразить только первое изображение галереи, и при нажатии на изображение вызывается лайтбокс, где вы можете просмотреть все изображения в этой галерее вместе с миниатюрами.
Теперь я могу достичь чтобы показать одно изображение для каждой галереи с использованием datalist, остальные изображения галереи находятся внутри массива внутри функции javascript, которую я не могу установить через код динамически. Изображения должны быть получены из другой таблицы.
Код для того же, что и ниже ASP. net html код
<asp:DataList ID="ProductItems" runat="server" DataKeyField="productID" RepeatColumns="4" RepeatLayout="Flow" OnItemDataBound="ProductItems_ItemDataBound">
<ItemTemplate>
<asp:HiddenField ID="prodID" runat="server" Value = '<%# Eval("productID") %>' />
<div class="productitem" >
<asp:DataList ID="productImage" HorizontalAlign="Left" runat="server" RepeatColumns="1" RepeatLayout="Flow" RepeatDirection="Horizontal">
<ItemTemplate>
<a href="#">
<div class="thumbnail" id='<%# Eval("productID") %>' style="display: inline-block;">
<img src='<%# Eval("imagePath_Th").ToString().Replace("~/", "") %>' alt="" class="img-fluid" />
<div class="thumbnail-overlay"><!-- [] --></div>
</div>
</a>
<div id="productimages" runat="server">
<script type="text/javascript">
$(document).ready(function() {
$('#<%# Eval("productID") %>').bind('click', function () {
Fresco.show([
{
url: '<%# Eval("imagePath").ToString().Replace("~/", "") %>',
options: {
thumbnail: '<%# Eval("imagePath_Th").ToString().Replace("~/", "") %>'
}
},
]);
});
});
</script>
</div>
</ItemTemplate>
</asp:DataList>
<div class="by">Design No: <asp:literal ID="Literal1" runat="server" Text='<%# Eval("designNo") %>'></asp:literal></div>
</div>
</ItemTemplate>
</asp:DataList>
Код ниже следующий :
protected void getProducts()
{
string strId2 = Request.QueryString["CategoryID"];
int CateId2 = int.Parse(strId2);
OleDbConnection cn = new OleDbConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["Padma"].ConnectionString);
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM ProductDetails where categoryId=" + CateId2 + " order by productID desc", cn);
DataTable dt = new DataTable();
da.Fill(dt);
cn.Close();
if (dt.Rows.Count > 0)
{
DataSet ProdData = new DataSet();
da.Fill(ProdData);
ProductItems.DataSource = ProdData;
ProductItems.DataBind();
cn.Close();
//noprod.Visible = false;
}
}
protected void ProductItems_ItemDataBound(object sender, DataListItemEventArgs e)
{
if ((e.Item.ItemType != ListItemType.Header) && (e.Item.ItemType != ListItemType.Footer))
{
HiddenField hfd = e.Item.FindControl("prodID") as HiddenField;
int ID2 = int.Parse(hfd.Value.ToString());
int hfd2 = int.Parse(hfd.Value.ToString());
int ID = Convert.ToInt32(hfd2);
DataList dlimg = e.Item.FindControl("productImage") as DataList;
dlimg.DataSource = Get1imagebyItemID(ID);
dlimg.DataBind();
}
}
public static DataSet Get1imagebyItemID(int eventId)
{
OleDbConnection cn = new OleDbConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["Padma"].ConnectionString);
OleDbDataAdapter da = new OleDbDataAdapter("SELECT top 1 * FROM ProductImages where productID= " + eventId + " ", cn);
DataSet DS = new DataSet();
da.Fill(DS);
return DS;
}
Может кто-нибудь помочь мне здесь. Я передал список массивов в массиве внутри функции Fresco.Show ([])
Ожидание ответа на выше.
Заранее спасибо.
Джей sh