如何使用数据绑定动态分配图像的ImageUrl属性?

时间:2010-11-11 17:37:54

标签: asp.net visual-studio-2010 data-binding

我有一个带有表格的SQL Server数据库,其中列出了图像的文件名。我打算从表格中的数据中为页面上的Image控件分配ImageUrl。我在页面上放置了一个SQLDataSource控件,然后尝试在其中放置一个FormView控件,并在其中放置一个Image控件。但我看不出如何通过数据绑定将值分配给ImageUrl属性

3 个答案:

答案 0 :(得分:8)

在你用来返回数据的任何类型的控制中,你会做类似的事情......

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

使用它并尝试一下......我所做的大部分工作都是在datagridviews或者转发器中......但这并不重要,它的重要性或重要性。

为您提供更多信息Rod。

  <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>

如果有帮助,请告诉我

答案 1 :(得分:2)

这种类型的绑定更简洁,至少对我来说更干净,就是处理ItemDataBound事件中的绑定。

所以你会做类似的事情:

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

我发现它比在实际标记中更优雅。

答案 2 :(得分:1)

.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>