我想添加“asp:Imagefield”到我的gridview,以便它可以显示基于房间类型的图像。可以说我们的房间类型是:单人,双人和家庭。基于这些我想要它也显示图像。在我的图像文件夹我有这些图像:Asp.net - 添加imagefield到gridview,并将其链接到数据类型字段
Double.jpg
Single.jpg
Family.jpg
因此,对于所有双行(其中Type =“Double”),它应显示Double.jpg图像。
现在我的GridView看起来是这样的:
Nr Type Price Select (checkbox)
我已经添加了像场,所以它看起来像现在这样:
Photo Nr Type Price Select
一些代码:
<!-- Source control -->
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnection %>" SelectCommand="SELECT Nr, Type, Price
FROM AspRooms r
WHERE @adults <= r.Adult AND @children <= r.Children AND NOT EXISTS
(
SELECT 1 FROM Booking b
WHERE b.RoomNr = r.Nr
AND
(
(CAST(@Checkin AS date) >= b.CheckIn AND CAST(@Checkin AS date) <= b.CheckOut)
OR (CAST(@Checkin AS date) <= b.CheckIn AND CAST(@Checkout AS date) >= b.CheckIn)
)
)
">
<SelectParameters>
<asp:ControlParameter ControlID="adults" Name="adults" PropertyName="SelectedValue" />
<asp:ControlParameter ControlID="childrens" Name="children" PropertyName="SelectedValue" />
<asp:ControlParameter ControlID="datetimepicker1" Name="Checkin" PropertyName="Text" />
<asp:ControlParameter ControlID="datetimepicker2" Name="Checkout" PropertyName="Text" />
</SelectParameters>
</asp:SqlDataSource>
<!-- Gridview table -->
<asp:GridView ID="GridView1" runat="server" CssClass="table table-hover table-condensed" GridLines="None" AutoGenerateColumns="False" DataKeyNames="Nr" DataSourceID="SqlDataSource1" Width="100%">
<Columns>
<asp:ImageField HeaderText="Rooms" DataImageUrlField="PhotoPath" ControlStyle-Height="150px" ControlStyle-Width="150px">
</asp:ImageField>
<asp:BoundField DataField="Nr" HeaderText="Nr" ReadOnly="True" SortExpression="Nr" />
<asp:BoundField DataField="Type" HeaderText="Type" SortExpression="Type" />
<asp:BoundField DataField="Price" HeaderText="Price" SortExpression="Price" />
<asp:TemplateField HeaderText="Select Room">
<EditItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</EditItemTemplate>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
正如你可以在代码中看到的,我在t中使用了DataImageUrlField =“PhotoPath”他ImageField。在我的数据库中,我创建了一个名为PhotoPath的字段,其中包含nchar(20)的数据类型。形式是这样的:images/single.jpg
但是,当这个运行我得到一个错误,它说:在选定的数据源上找不到名称为'PhotoPath'的字段或属性。
任何可以看到我的代码中目前的错误?
您的代码似乎不符合您的意见 - 查询不会选择一个名为'PhotoPath'的字段,并且'ImageField'不会查找名为'PhotoType'的字段。根据猜测,您已经忘记将该列添加到“SelectCommand”中,或者您在“ImageField”上使用了错误的字段名称 - 您称该列名为“PhotoPath”,但错误消息指的是'PhotoType'。 –
哦,是的,我犯了一个拼写错误..错误是PhotoPath和试图将我的imageField链接到“PhotoPath”的字段我不想选择该字段并将其显示在我的GridView中,但是如何才能使字段“PhotoPath”availeble? – Mikkel
您必须将该列添加到“SelectCommand”以绑定到它。您已指定'AutoGenerateColumns =“False”',因此它不会自动显示为单独的列。 –