2012-04-11 54 views
2

我有一个网格视图的购物车项目,这是在运行时绑定的,现在我的要求是我想在图像中给出下面给出的网格中的两个标题行,它将如何可能吗?谁能帮我?要求在网格视图中的两个标题行

My Design For Grid http://content.screencast.com/users/Pr6546/folders/Default/media/f7da2da4-f80e-4674-b1d4-0ccd872966d2/Capture.PNG http://www.screencast.com/t/g4HkqlSpx

下面是我的栅源

<asp:GridView ID="gvCheckOutItems" GridLines="None" ShowFooter="true" DataKeyNames="Item_No" 
    Width="100%" border="0" CellSpacing="0" CellPadding="5" AutoGenerateColumns="false" 
    CssClass="Checkout-Grid" runat="server" OnRowCreated="gvCheckOutItems_RowCreated"> 
    <Columns> 
     <asp:TemplateField HeaderStyle-Width="7%"> 
      <ItemTemplate> 
       <asp:LinkButton ID="lnkBtnRemove" runat="server" OnClick="lnkBtnRemove_Click" Text="Remove" 
        CssClass="blue-link"></asp:LinkButton> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:BoundField HeaderText="Item No" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" 
      DataField="Item_No" HeaderStyle-Width="7%" /> 
     <asp:BoundField HeaderText="Title" HeaderStyle-HorizontalAlign="Left" FooterStyle-HorizontalAlign="Center" 
      ItemStyle-HorizontalAlign="Left" DataField="Title" HeaderStyle-Width="25%" /> 
     <asp:BoundField HeaderText="Offered By" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" 
      DataField="Trainer" HeaderStyle-Width="16%" FooterText="<strong>Order Total</strong>" /> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:TextBox ID="txtItemFormat" runat="server" Text='<%# Eval("Item_Format") %>' 
        Visible="false"></asp:TextBox> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:BoundField HeaderText="Format" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" 
      DataField="Format" HeaderStyle-Width="15%" /> 
     <asp:BoundField HeaderText="Duration" ItemStyle-HorizontalAlign="Right" DataField="Duration" 
      HeaderStyle-Width="7%" /> 
     <asp:TemplateField HeaderStyle-Width="7%" HeaderStyle-HorizontalAlign="Right" ItemStyle-HorizontalAlign="Right" 
      FooterStyle-HorizontalAlign="Right" HeaderText="Quantity"> 
      <ItemTemplate> 
       <asp:TextBox ID="txtQuantity" Enabled="false" CssClass="quantity" Text='<%#Eval("Quantity")%>' 
        onblur="fnquantityEmpty(this)" onkeyup="extractNumber(this,0,false);" onkeypress="return blockNonNumbers(this, event, false, false);" 
        runat="server" MaxLength="4" AutoPostBack="true" OnTextChanged="Qty_Changed"></asp:TextBox> 
      </ItemTemplate> 
      <FooterTemplate> 
       <strong> 
        <asp:Label ID="lblFooterQuantity" runat="server"></asp:Label></strong> 
      </FooterTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Price" ItemStyle-HorizontalAlign="Right" HeaderStyle-HorizontalAlign="Center" 
      HeaderStyle-Width="7%"> 
      <ItemTemplate> 
       <asp:Label ID="lblPrice" runat="server" Text='<%#getConvertedPrice(Eval("Price")) %>'></asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:TextBox ID="txtItemOwnerID" runat="server" Text='<%# Eval("ItemOwnerID") %>' 
        Visible="false"></asp:TextBox> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Subtotal" ItemStyle-HorizontalAlign="Right" HeaderStyle-HorizontalAlign="Right" 
      FooterStyle-HorizontalAlign="Right" HeaderStyle-Width="8%"> 
      <ItemTemplate> 
       <asp:Label ID="lblSubTotal" runat="server" Text='<%#getConvertedPrice(Eval("Subtotal")) %>'></asp:Label> 
      </ItemTemplate> 
      <FooterTemplate> 
       <strong> 
        <asp:Label ID="lblFooterTotalPrice" runat="server" Text="" ToolTip="Total"></asp:Label></strong> 
      </FooterTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

问候

+0

谢谢科特我不能那样做.. – 2012-04-11 09:02:48

+0

你到目前为止做了什么?你可以在这里发布gridview标记吗? – CoderHawk 2012-04-11 09:15:23

+0

看到这里http://www.screencast.com/t/s9UVdtO3FR给你我旧的网格视图的屏幕截图。其中我已分配Click事件以删除购物车项目,并再次呈现网格。 – 2012-04-11 10:03:50

回答

0

请检查下面的链接。他们提供了一个关于如何在GridView中应用多行的解决方案。希望它能让你走。

+0

谁曾经downvoted,请关心解释为什么?这个答案被接受了,两个链接都运行得很好! – utsikko 2014-08-28 09:01:44

+3

我没有downvote,但我报告它为链接唯一的答案。请参阅http://meta.stackoverflow.com/questions/269958/regarding-the-two-flags-not-an-answer-being-declined中的讨论通常情况下,这些案例的文本是“虽然此链接可能回答问题,最好在这里包含答案的重要部分,并提供参考链接。如果链接页面发生变化,则仅链接答案可能会失效。“我认为这是事实。另请参阅[是否只包含其他链接的答案真的是“好答案”?](http://meta.stackexchange.com/q/8231/209901) – fedorqui 2014-08-29 09:10:25

1

你有没有考虑过放弃GridView和使用中继器的控制呢?这会给你更多的灵活性。

+0

赞赏,但为此我必须开始新的代码,但我只是在这里设计更改,所以对于我来说这将是非常复杂的,以确定这一点。如果可能有其他方法,那么我只会更喜欢这种方式。 – 2012-04-11 09:14:08

+0

这不是一个答案,只是一个评论。可能属于原来的帖子。 – 2016-06-09 16:25:55

1

我建议的最好的事情是添加一行应该在您的数据源顶部和标题&类型/格式添加提供&条款/时间表分别为值。

这会为您生成所需的输出。

快乐编码!

+1

嗯,我只是这样做,在OnRowCreatedEvent和实施我的设计感谢添加行。 :) – 2012-04-11 11:06:07

1

一种选择可能是处理的RowDataBound并在行类型的标题设置自己RenderMethod并自己编写HTML。

e.Row.SetRenderMethodDelegate(New RenderMethod(AddressOf RenderHeader))