本人一般都是制作后台管理和统计系统,对产品展示类页面实在不在行,现遇头疼问题,如何使用GridView实现以下格式的展示页面,
不知从何处下手,在此请各路高手帮忙解决,给出代码。
格式如下:产品1图片   产品2图片    产品3图片    产品4图片
产品说明     产品说明     产品说明     产品说明
产品价格     产品价格     产品价格     产品价格
产品评论     产品评论     产品评论     产品评论
产品5图片    产品6图片    产品7图片    产品8图片
产品说明     产品说明     产品说明     产品说明
产品价格     产品价格     产品价格     产品价格
产品评论     产品评论     产品评论     产品评论
产品9图片    产品10图片    产品11图片    产品12图片
产品说明     产品说明      产品说明       产品说明
产品价格     产品价格      产品价格       产品价格
产品评论     产品评论      产品评论       产品评论所有信息都是从数据库中读出,进行绑定。

解决方案 »

  1.   

    第一:建议用datalist
    第二:可以对GgridView分组
    http://www.cnblogs.com/downmoon/archive/2008/08/26/1276538.html
    http://blog.csdn.net/downmoon/archive/2008/08/26/2832007.aspx
      

  2.   

    楼主的这种效果,最好用DataList,当然用Repeater也可以实现
      

  3.   

    这种样子用DataList比较方便
      

  4.   

    谢谢各位,还真没怎么用过datalist这个控件,有没有实例代码,发上来给参考一下
      

  5.   

    我刚开始也喜欢GRIDVIEW
    看起来很简单
    不用代码就搞定但用了DATALIST和REPEATER才发现GRIDVIEW不像想象的那么好用
    找一篇介绍DATALIST的文章看一遍
    基本就会做了
      

  6.   

    谢谢各位,还真没怎么用过datalist这个控件,有没有实例代码,发上来给参考一下
    ==
    找任何一本asp.net 2.0的书都有
      

  7.   

    Gridview中放Table,绑定的是HTML代码,得自己创建数据源
      

  8.   

    哈哈,datalist解决有图片和横向排列的最简单办法
      

  9.   

    DATALIST小结设计模版: 页眉<HeaderTemplate>   </HeaderTemplate> 
      
    页脚<FooterTemplate> </FooterTemplate> 
      
    数据记录<ItemTemplate> </ItemTemplate>                    <AlternatingItemTemplate>   交替显示项 </AlternatingItemTemplate> 
      
    <SelectedItemTemplate>选中时的显示方式    </SelectedItemTemplate> 
      
    <EditItemTemplate> 编辑时的显示方式 </EditItemTemplate> 
      
    <SeparatorTemplate>  数据记录分隔符 </SeparatorTemplate> 
      
    编辑模版,里面可以嵌入控件,绑定数据。 <ItemTemplate>      <table>          <tr>          <td><%# DataBinder.Eval(Container.DataItem, "持股名称") %></td>          <td><%# DataBinder.Eval(Container.DataItem, "市值", "{0:n}") %></td>          <td><%# DataBinder.Eval(Container.DataItem, "净值", "{0:n}") %></td>          </tr>      </table> </ItemTemplate> 
        
    设置外观 RepeatLayout        属性设置显示方式 RepeatDirection     显示方向 RepeatColumns      列数 
      
      事件 加入模版列的按钮会将其click事件反升到 ItemCommand 事件,也可设置 CommandName 来响应不同的事件,如设为:edit,即引发EditCommand()等。 注:若设为:select 则会引发SelectedIndexChanged 和ItemCommand事件   SelectedItemTemplate模版;  添加详细信息的控件,当用户选择了该项,选择模版则显示。 private void DataList1_ItemCommand(……) {     switch(e.CommandName)     {         case "select":             this.DataList1.SelectedIndex=e.Item.ItemIndex;             string s=(string)this.DataList1.DataKeys[e.Item.ItemIndex];             //在此获得该条记录的详细数据,在SelectedItemTemplate模版里显示。             break;         case "unselect":             this.DataList1.SelectedIndex=-1;             break;             }     this.DataList1.DataBind();//一定要 } 
        
    EditItemTemplate模版     编辑:             this.DataList1.EditItemIndex=e.Item.ItemIndex;             this.DataList1.DataBind();     更新:             得到主键 string s=(string)this.DataList1.DataKeys[e.Item.ItemIndex]; 得到模版里的控件 TextBox box=(TextBox)e.Item.FindControl("TextBox1"); 更新记录 this.DataList1.DataBind();     取消:             this.DataList1.EditItemIndex=-1;             this.DataList1.DataBind(); 
      
    删除项 一次勾选多条记录,一次删除             foreach(DataListItem i in this.DataList1.Items)             {                 bool IsChecked=((CheckBox)i.FindControl("deletectr")).Checked;                 if(IsChecked)                 {                     string s=(string)this.DataList1.DataKeys[e.Item.ItemIndex];                     删除操作                 }         }       运行中自定义DataList控件 //当创建DataList控件中的任意项时 private void DataList1_ItemCreated(object sender, System.Web.UI.WebControls.DataListItemEventArgs e) {     switch(e.Item.ItemType)     {         case ListItemType.Header:             e.Item.ForeColor=Color.Red;             e.Item.BackColor=Color.Black;             break;         case ListItemType.Item:             e.Item.BackColor=Color.Black;             break;     }     } 
      
    //当模版中的项被数据绑定时发生,数据被显示到客户端前加以访问的最后机会 private void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e) {     if((e.Item.ItemType==ListItemType.Header)||(e.Item.ItemType==ListItemType.Item))     {         System.Data.Common.DbDataRecord drv=             (System.Data.Common.DbDataRecord)e.Item.DataItem;         if((decimal)drv["库存量"]<1000)         {             e.Item.ForeColor=Color.Red;         }     }     } 
      
        另种方式 
      
                if((e.Item.ItemType==ListItemType.Header)||(e.Item.ItemType==ListItemType.Item))             {                 DataRowView drv=(DataRowView)e.Item.DataItem;                 string department=(string)drv["部门"];                 switch(department)                 {                     case "销售部":                         e.Item.BackColor=Color.Black;                         break;                     case "技术部":                         e.Item.BackColor=Color.Red;                         break;                 }             }