2011-09-01 67 views
0

我有一个画廊,其中包含大量的缩略图图像,我想一次显示6。显示3列gridview

我有这种工作使用下面的代码,但我不能得到的图像,以显示为2行3 - 它显示为6行的1

我可以通过使用数据列表获得所需的结果但是这阻止了pageindex函数的工作。

我确定有一个简单的解决方案,但我无法弄清楚。

<asp:GridView id="GridView1" runat="server" AutoGenerateColumns="False" AllowPaging="True" PageSize="6" onpageindexchanging="PageIndexChanged" PagerSettings-Mode="NextPrevious" PagerSettings-NextPageText="Next" PagerSettings-PreviousPageText="Previous"> 
    <Columns> 
     <asp:TemplateField> 
      <itemtemplate> 
       <asp:Image ID="Image2" runat="server" ImageUrl='<%# Eval("userID", "/imageUpload/Handler.ashx?userID={0}&image=2")%>' ></asp:Image> 
      </itemtemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

回答

0

您可能需要考虑使用简单的asp.net转发器控件,并将您的项目呈现为DIV。您可以使用CSS“float”指令使您的DIV在其容器中自动“换行”,以便高效地适应空间(非常类似于在文本框到达行末时文本“换行”的方式)。

由于它们是动态包装的,因此float'd DIV可以更方便用户使用:如果您的用户具有宽屏幕高分辨率,那么图像可能呈现为1x6行。如果您的用户缩小浏览器窗口,则DIV会自动将其自身重新排列为3x2网格。

你不会获得免费的数据分页行为,但它并不难实现。

0

你可能会对另一个控件(中继器等)感到高兴...... Gridviews是有限的,因为它们与行数据行匹配。

如果为此在出于某种原因一个gridview,一个办法是修改SELECT在您的数据源,使得它把你的图像转换成3列。您可能可以通过pivot和rownumber()函数或其他方式来完成此操作。一旦你这样做,你会修改你的grideview(复制你的模板列两次)。