Вызов и вставка значений в массив javascript функции внутри элемента списка данных из кода c#. net - PullRequest
0 голосов
/ 18 апреля 2020

Я сейчас работаю над проектом, в котором необходимо отобразить набор галерей. Цель здесь - просто отобразить только первое изображение галереи, и при нажатии на изображение вызывается лайтбокс, где вы можете просмотреть все изображения в этой галерее вместе с миниатюрами.

Теперь я могу достичь чтобы показать одно изображение для каждой галереи с использованием 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

...