ASP.Net在GridView中跨列和跨行显示图像?使用C#
我想在Gridview中显示一些缩略图。我不熟悉提供的所有定制。基本上,我想将图像存储在Gridview中,可能跨越5列宽…然后是完成其余部分所需的行数。我不想要任何列或行标题,也不想看到实际网格的证据。我还想使图像可点击 我将从Asp.net中的Sql数据库中提取图像。我不想将网格绑定到sqldatasource,而是在页面后面的代码中使用某种循环将图像粘贴到网格中。这就是我感到困惑的地方。我知道您可以创建datatable并添加列和行。但是,行/列似乎不跨。如何存储图像,使其像网格一样工作。我在下面提供了一些(非常)sudo代码,让您了解我正在尝试做什么 sudo代码:ASP.Net在GridView中跨列和跨行显示图像?使用C#,c#,asp.net,sql,gridview,image,C#,Asp.net,Sql,Gridview,Image,我想在Gridview中显示一些缩略图。我不熟悉提供的所有定制。基本上,我想将图像存储在Gridview中,可能跨越5列宽…然后是完成其余部分所需的行数。我不想要任何列或行标题,也不想看到实际网格的证据。我还想使图像可点击 我将从Asp.net中的Sql数据库中提取图像。我不想将网格绑定到sqldatasource,而是在页面后面的代码中使用某种循环将图像粘贴到网格中。这就是我感到困惑的地方。我知道您可以创建datatable并添加列和行。但是,行/列似乎不跨。如何存储图像,使其像网格一样工作。
colcount = 0;
rowcount = 0;
imagecount = 0;
while(images.length > imagecount){
if(colcount < 5){
grid[rowcount][colcount] = images[imagecount];
colcount++;
imagecount++;
}
else{
rowcount++;
colcount = 0;
}
}
colcount=0;
行数=0;
imagecount=0;
而(images.length>imagecount){
如果(colcount<5){
网格[rowcount][colcount]=图像[imagecount];
colcount++;
imagecount++;
}
否则{
行计数++;
colcount=0;
}
}
为什么不手动生成网格
在codebehind中创建一个方法,使用
Response.Write
语句输出必要的HTML。在.aspx
页面中,使用
调用您的方法并显示相应的网格。为什么不手动生成网格
在codebehind中创建一个方法,使用
Response.Write
语句输出必要的HTML。在.aspx
页面中,使用
调用您的方法并显示相应的网格。对于此处描述的所有内容,您最好使用DataList控件。您可以通过使用RepeatColumns属性来指定要有多少列宽,甚至可以通过将RepeatLayout属性设置为“Flow”来消除任何“表格性”的感觉
这还可以让您不必担心列计数,甚至可以绑定一组图像进行绑定
编辑:既然你要求一个例子,那么就这么简单。首先创建网格,并确保图像具有占位符:
<asp:DataList ID="dlImages" runat="server"
RepeatColumns="5"
RepeatDirection="Horizontal"
RepeatLayout="Flow">
<ItemTemplate>
<asp:Image ID="imgPrettyPic" runat="server" />
</ItemTemplate>
</asp:DataList>
这就是人们在事情上的不同之处。我更喜欢在代码隐藏中执行所有RowBinding类型的方法,而不是内联,因此我随后使用DataList的RowDataBound事件,并简单地相应地绑定URL属性
protected void dlImages_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
Image TargetImage = default(Image);
DataRow DataSourceRow = default(DataRow);
DataSourceRow = ((System.Data.DataRowView)e.Item.DataItem).Row;
TargetImage = (Image)e.Item.FindControl("imgPrettyPicture");
TargetImage.ImageUrl = DataSourceRow.Item("ImageURL").ToString;
}
…这会让你振作起来。注意:您需要将DataSourceRow对象更改为数据绑定的任何类型的项。我使用的是DataRow,因为这是我通常遇到的最常见的场景。对于您在这里描述的所有内容,您最好使用DataList控件。您可以通过使用RepeatColumns属性来指定要有多少列宽,甚至可以通过将RepeatLayout属性设置为“Flow”来消除任何“表格性”的感觉 这还可以让您不必担心列计数,甚至可以绑定一组图像进行绑定 编辑:既然你要求一个例子,那么就这么简单。首先创建网格,并确保图像具有占位符:
<asp:DataList ID="dlImages" runat="server"
RepeatColumns="5"
RepeatDirection="Horizontal"
RepeatLayout="Flow">
<ItemTemplate>
<asp:Image ID="imgPrettyPic" runat="server" />
</ItemTemplate>
</asp:DataList>
这就是人们在事情上的不同之处。我更喜欢在代码隐藏中执行所有RowBinding类型的方法,而不是内联,因此我随后使用DataList的RowDataBound事件,并简单地相应地绑定URL属性
protected void dlImages_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
Image TargetImage = default(Image);
DataRow DataSourceRow = default(DataRow);
DataSourceRow = ((System.Data.DataRowView)e.Item.DataItem).Row;
TargetImage = (Image)e.Item.FindControl("imgPrettyPicture");
TargetImage.ImageUrl = DataSourceRow.Item("ImageURL").ToString;
}
…这会让你振作起来。注意:您需要将DataSourceRow对象更改为数据绑定的任何类型的项。我使用的是数据行,因为这是我通常遇到的最常见的场景。您可以使用中继器。。。这将允许您真正定义每个“行”或“列”的外观,以及它们是水平重复还是垂直重复您可以使用中继器。。。这将允许您真正定义每个“行”或“列”的外观,以及它们是水平还是垂直重复。如果您想要特定的HTML,那么您将在整个时间内与GridView发生冲突。改用ListView或Repeater
<asp:ListView runat="server">
<LayoutTemplate>
<table>
<asp:PlaceHolder id="itemPlaceHolder" runat="server" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td colspan="5"><asp:Image runat="server" src='<%# Eval("ImageUrl")' %></td>
<td><%# Eval("Column1") %></td>
</tr>
</ItemTemplate>
</asp:ListView>
-是数据结构-不是布局控件。如果您想以编程方式创建
,可以使用以下两种方法之一。您可以在关联的TableRow或HtmlTableRow上设置colspan和rowspan。如果您想要特定的HTML,那么您将在整个时间内与GridView发生冲突。改用ListView或Repeater
<asp:ListView runat="server">
<LayoutTemplate>
<table>
<asp:PlaceHolder id="itemPlaceHolder" runat="server" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td colspan="5"><asp:Image runat="server" src='<%# Eval("ImageUrl")' %></td>
<td><%# Eval("Column1") %></td>
</tr>
</ItemTemplate>
</asp:ListView>
-是数据结构-不是布局控件。如果您想以编程方式创建
,可以使用以下两种方法之一。您可以在关联的TableRow或HtmlTableRow上设置colspan和rowspan。可能的示例,我的意思是我不熟悉这些控件的大多数属性……有点像noob。非常感谢!我要试着马上把这件事办好。我也喜欢在代码背后进行绑定……这对我来说更有意义。这也更容易理解正在发生的事情。可能的例子,我的意思是我不熟悉这些控件的大多数属性…有点呆板。非常感谢!我要试着马上把这件事办好。我也喜欢在代码背后进行绑定……这对我来说更有意义。也更容易理解正在发生的事情?我不熟悉复读机。我理解你的意思,但不知道如何实现它?你是如何存储图像的?二进制还是仅在这些位置?例如?我不熟悉复读机。我理解你的意思,但不知道如何实现它?你是如何存储图像的?二进制或j