Как динамически назначить свойство ImageUrl изображения, используя привязку данных? - PullRequest
3 голосов
/ 11 ноября 2010

У меня есть база данных SQL Server с таблицей, в которой перечислены имена файлов изображений. Я намерен назначить ImageUrl элемента управления Image на странице из данных в таблице. Я поместил элемент управления SQLDataSource на страницу, а затем попытался поместить туда элемент управления FormView и элемент управления Image. Но я не понимаю, как я могу присвоить значение свойству ImageUrl через привязку данных.

Ответы [ 3 ]

8 голосов
/ 11 ноября 2010

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

<asp:imagebutton id="btnId" runat="server" ImageUrl='<%# Bind("ImgUrl") %>' />

Поиграйте с этим и попробуйте ... большая часть того, что я делаю, - это сетевые обзоры или ретрансляторы ... но на самом деле это не имеет большого значения, так как имеет значение привязка или оценка.

Немного больше информации для вас, Род.

  <asp:SqlDataSource
      id="SqlDataSource1"
      runat="server"
      DataSourceMode="DataReader"
      ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
      SelectCommand="SELECT LastName FROM Employees">
  </asp:SqlDataSource>

  <asp:SqlDataSource
      id="SqlDataSource2"
      runat="server"
      DataSourceMode="DataReader"
      ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
      SelectCommand="SELECT FirstName FROM Employees">
  </asp:SqlDataSource>


  <asp:ListBox
      id="ListBox1"
      runat="server"
      DataTextField="LastName"
      DataSourceID="SqlDataSource1">
  </asp:ListBox>
  <asp:ListBox
      id="ListBox2"
      runat="server"
      DataTextField="FirstName"
      DataSourceID="SqlDataSource2">
  </asp:ListBox>

Дайте мне знать, если это поможет

2 голосов
/ 11 ноября 2010

Более чистым способом связывания такого рода, по крайней мере, мне понятнее, будет обработка привязки в событии ItemDataBound.

Итак, вы бы сделали что-то вроде:

Image imageToBind = e.Item.FindControl("imgTest") as Image;
image.ImageUrl = (string)DataBinder.Eval(e.Item.DataItem, "ColumnName");

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

1 голос
/ 31 марта 2011

.aspx.cs

public string GetImage(string status)
    {
        if (status=="Active")

            return "~/images/green_acti.png";

        else

            return "~/images/red_acti.png";

    }

.aspx

 <asp:TemplateField HeaderText="|| Status ||">
          <ItemTemplate>
                <asp:Image ID="imgGreenAct" ImageUrl='<%# GetImage(Convert.ToString(DataBinder.Eval(Container.DataItem, "truck_status")))%>' AlternateText='<%# Bind("truck_status") %>' runat="server" />                            
          </ItemTemplate>
 </asp:TemplateField>
...