как привязать URL-адрес изображения списка данных к элементу управления изображением, которое находится вне списка данных при команде вставки

У меня есть контроль изображения за пределами списка данных, я хочу назначить URL-адрес изображения этому элементу управления изображением по команде вставки.

Список данных:

<asp:DataList ID="DataList1" runat="server" RepeatDirection="Vertical" onitemcommand="DataList1_ItemCommand" onitemdatabound="DataList1_ItemDataBound" CaptionAlign="Right" CellSpacing="6">
<ItemTemplate>
<asp:ImageButton ID="Image" runat="server" ImageUrl='<%#"~/Controls/ShowImage.ashx?FileName=" +DataBinder.Eval(Container.DataItem, "FilePath") %>'
 OnCommand="Insert_Command" CommandArgument='<%# Eval("Id").ToString() +";"+Eval("FilePath")%>' />
 <asp:Label ID="lblimagenumber" runat ="server" Text='<%# DataBinder.Eval(Container.DataItem, "FileName") %>' ></asp:Label>
</ItemTemplate>
</asp:DataList>

управление изображением вне списка данных:

<div id="loadarea" class="imageViewArea">
        <asp:Image ID="imgthumb" runat="server" />
    </div>

вставить команду:

protected void Insert_Command(object sender, CommandEventArgs e)
    {
        string[] str = e.CommandArgument.ToString().Split(';');
        hImgInsId.Value = str[0];
        ImgName = str[1];

        //Image imgThumb = (Image)this.FindControl("imgthumb");
        //imgThumb.ImageUrl=
        //how to assign datalist image url to image contol here...?
        // this is datalist imagebtn imageurl ImageUrl='<%#"~/Controls/ShowImage.ashx?FileName=" +DataBinder.Eval(Container.DataItem, "FilePath") %>'
    }

   public void BindImages()
    {
        List<int> ImgIds = new List<int>();
        List<string> imgFileName = new List<string>();
        txbCaption.Text = "";
        if (ImgUpLoad.ImgFleIds != null)
            ImgIds = ImgUpLoad.ImgFleIds;
        if (ViewState["imgIds"] != null)
        {
            List<int> oldids = (List<int>)ViewState["imgIds"];
            ImgIds.AddRange(oldids);
            ImgIds.Sort();
        }
        path = objGetBaseCase.GetImages(ImgIds);
        for (int i = 0; i < path.Count; i++)
        {
            ArrayList alst = path[i];
            if (i == 0)
                hImgInsId.Value = alst[0].ToString();

            tb.Rows.Add(Convert.ToInt32(alst[0]), "Figure " + (i + 1).ToString(), alst[2].ToString());
            imgIds.Add(Convert.ToInt32(alst[0]));
            imgFileName.Add(alst[2].ToString());
        }
        ViewState["imgIds"] = imgIds;
        ViewState["imgFileName"] = imgFileName;
        DataList1.DataSource = tb;
        DataBind();
        ImgIds.Clear();
        if (DataList1.Items.Count == 1)
        {

            Label lblimgname = (Label)DataList1.Items[0].FindControl("lblimagenumber");
            lblimgname.Style.Add(HtmlTextWriterStyle.Color, "Red");
            lblimgname.Font.Bold = true;
            if (imgIdCapHtbl != null && imgIdCapHtbl.ContainsKey(imgIds[0]))
                txbCaption.Text = imgIdCapHtbl[imgIds[0]].ToString();
        }

    }

person Rocky    schedule 17.08.2011    source источник


Ответы (1)


imgThumb.ImageUrl="~/Controls/ShowImage.ashx?FileName=" +ImgName; 

Или я что-то пропустил в вашем вопросе?

person Nastya Kholodova    schedule 17.08.2011
comment
Это зависит от того, когда вы привязываете DataList, если до загрузки страницы, то да. - person Nastya Kholodova; 17.08.2011
comment
на самом деле я хочу показать первое изображение списка данных в coltrol изображения, поскольку изображение загружается в список данных. Сейчас оно отображается, когда я нажимаю на изображение. и я не загружаю список данных перед загрузкой страницы. - person Rocky; 17.08.2011
comment
Поделитесь, пожалуйста, логикой привязки вашего даталиста. Трудно дать aswere. И нечестно снимать пометку с вопроса как отвеченного после следующего вопроса! - person Nastya Kholodova; 17.08.2011
comment
Я отредактировал qus и добавил код привязки данных, который я вызываю при загрузке страницы. ImgUpLoad.AddImgs += делегат { BindImages(); }; Теперь, пожалуйста, скажите мне, как показать первое изображение при загрузке изображения. - person Rocky; 17.08.2011
comment
Чувак, тебе нужен огромный рефакторинг здесь! Весь этот код нечитаем! ImgUpLoad что это???? Я не вижу этого в вашем коде ascx/aspx... - person Nastya Kholodova; 17.08.2011
comment
ImgUpLoad — это имя страницы ascx. - person Rocky; 18.08.2011