【问题标题】:asp.net gridview template field with second row spanning mutiple columnsasp.net gridview 模板字段,第二行跨越多列
【发布时间】:2014-10-27 21:36:26
【问题描述】:

下午好, 我想知道这是否可能。我有一个带有几个(4 个模板字段)的 gridview。这4个字段包括

  1. 名字
  2. 姓氏
  3. 电话
  4. 电子邮件

我想做的是完全在不同的行上获得第五个数据列(地址),以便数据看起来像这样。

  • 第 1 行 |名字 |姓氏 |电话 |电子邮件|记录 #1
  • 第 2 行 |地址 |记录 #1
  • 第 3 行 |名字 |姓氏 |电话 |电子邮件|记录 #2
  • 第 4 行 |地址 |记录 #2

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 对这个逻辑使用中继器而不是网格视图!
  • 转发器控件是否允许对行进行编辑/删除?如果这个问题听起来过于简单,我们深表歉意。

标签: c# asp.net gridview aspxgridview


【解决方案1】:

由于某种原因,这个问题被赞成。我会给你写一个答案:

<table>
    <asp:Repeater runat="server" ID="repeater1" >
       <ItemTemplate>
          <tr>
               <td> <%#Eval("FirstName")%></td>
               <td> <%#Eval("LastName")%></td>
                    ....//other <td></td>
          </tr>
          <tr>
               <td><%#Eval("Address")%></td>
          </tr>
       </ItemTemplate>
    </asp:Repeater>
</table>

我会留给你css部分,如果你想让列名查看&lt;th&gt;标签,但我不知道当你在第1行有不同形式的第2行时你将如何正确实现这一点. 如果您想拥有删除/编辑功能,您应该添加新的tdlinkButton/ImageButton/Button,其功能将删除/编辑当前行。为此,您需要在按钮的CommandArguments 中使用&lt;%#Eval("ID")%&gt;。但同样在这种情况下,这将很有趣,因为您在 2 行上有一个记录。设计决策由您完成,这就是解决方案。

您可能应该看看如何在第 1 行有多个列,而在第 2 行只有一个列,这是 td colspan 的属性

在后面的代码中:

        repeater1.DataSource = dst; // this should be data set containing all the needed values
        repeater1.DataBind();

【讨论】:

    【解决方案2】:

    我不知道为什么您可以在 GridView 中执行此操作不是更常见的知识。您可以混合和匹配跨行,并在跨度(绑定或模板化)的末尾添加一些常规 GridView 列。

    您确实失去了 GridView 的一些花里胡哨,因为您将不得不手动处理排序以及使 GridView 易于使用的其他一些事情。但与中继器不同的是,您仍然可以获得 GridView 的一些额外功能。

    如果您将与我在此处绑定的字段匹配的数据源放在一起,您将看到它有第二行跨越多列(一直到 GridView 的最后一个模板化列)。

    它基本上是一个标题模板、两个 HTML 表格,然后是你需要的任何类型的 GridView 列,如果有的话。

    第一个 html 表是正常行。第二个 html 表只是一长行,用于放置长描述或注释之类的内容。

    此处未包含 CSS,但这就是您设置列宽和对齐方式的方式。

    工作正常,但构建这些肯定需要更长的时间。您必须花费大量时间调整列宽,并且让标题列与行列匹配是一件很痛苦的事情。但是,这与您为转发器制作模板所遇到的情况并无太大区别。

    <asp:GridView ID="GridView2" AutoGenerateColumns="False" runat="server" >
          
          <Columns>
            <asp:TemplateField>
                <HeaderTemplate>
                            <table id="Table1" runat="server" >   
                        <tr id="Tr1" runat="server" >   
                        <td id="Td1" style="width: 55px; text-align: center; vertical-align: bottom; border-right: solid 1px black;" runat="server">
                            <asp:LinkButton ID="lbPoNoSort" CommandArgument="id" CommandName="Sort" runat="server">ID#</asp:LinkButton></td>   
                        <td id="Td2" style="width: 85px;" runat="server"> 
                            <asp:LinkButton ID="lbDateRequested" CommandArgument="ReqDate" CommandName="Sort" runat="server">Date</asp:LinkButton></td>   
                        <td id="Td3" style="width: 100px; text-align: center; vertical-align: bottom; border-left: solid 1px black; border-right: solid 1px black;" runat="server">
                            <asp:LinkButton ID="lblNameSort" CommandArgument="col2" CommandName="Sort" runat="server">Name</asp:LinkButton></td>   
                        <td id="Td4" style="width: 130px; text-align: center; vertical-align: bottom; border-left: solid 1px black; border-right: solid 1px black;" runat="server">
                            <asp:LinkButton ID="lblApprovSort" CommandArgument="approved_by" CommandName="Sort" runat="server">User</asp:LinkButton></td>   
                        <td id="Td5" style="width: 175px; text-align: center; vertical-align: bottom; border-left: solid 1px black; border-right: solid 1px black;" runat="server">
                            <asp:LinkButton ID="lbVendorSort" CommandArgument="vendor" CommandName="Sort" runat="server">Vendor</asp:LinkButton></td>  
                        <td id="Td7" style="width: 150px; text-align: center; vertical-align: bottom; border-left: solid 1px black; border-right: solid 1px black;" runat="server"> 
                            <asp:LinkButton ID="lbTypeSort" CommandArgument="col4" CommandName="Sort" runat="server">Type</asp:LinkButton></td>  
                        <td id="Td8" style="width: 65px; text-align: center; vertical-align: bottom; border-left: solid 1px black; border-right: solid 1px black;" runat="server">
                            <asp:LinkButton ID="lbNoSort" CommandArgument="col5" CommandName="Sort" runat="server">OrderNo</asp:LinkButton></td>  
                        <td id="Td9" style="width: 90px; text-align: center; vertical-align: bottom; border-left: solid 1px black; border-right: solid 1px black;" runat="server">
                            <asp:LinkButton ID="lbCostSort" CommandArgument="col6" CommandName="Sort" runat="server">Est. Cost</asp:LinkButton></td>  
                        <td id="Td10" style="width: 75px; text-align: center; vertical-align: bottom; border-left: solid 1px black; border-right: solid 1px black;" runat="server">
                            <asp:LinkButton ID="lbPaymentTypeSort" CommandArgument="col10" CommandName="Sort" runat="server">Payment Type</asp:LinkButton></td>
                        <td id="Td11" style="width: 75px; text-align: center; vertical-align: bottom; border-left: solid 1px black; border-right: solid 1px black;" runat="server">
                            <asp:LinkButton ID="lbLocationSort" CommandArgument="col7" CommandName="Sort" runat="server">Inventory Location</asp:LinkButton></td>
                        <td id="Td12" style="width: 75px; text-align: center; vertical-align: bottom; border-left: solid 1px black;" runat="server">
                            <asp:LinkButton ID="lbDeliverySort" CommandArgument="col13" CommandName="Sort" runat="server">Delivery Method</asp:LinkButton></td>
                        </tr> 
                    </table>
                </HeaderTemplate>
                <ItemTemplate>
    
                  
            <table >
                <tr>   
                    <td style="width: 55px; text-align: center; vertical-align: top; border-right: solid 1px black;">   
                        <asp:Label ID="Label7" runat="server" Visible="false" Text='<%# Bind("id") %>'></asp:Label>
                        <asp:LinkButton ID="lbPoNo" CommandName="View" runat="server" Visible="true" Text='<%# Bind("id") %>' ></asp:LinkButton>
                    </td>   
                    <td style="width: 85px; text-align: center; vertical-align: top; border-left: solid 1px black; border-right: solid 1px black;">   
                        <asp:Label  ID="Label2" runat="server" Text='<%# Eval("Date")%>' >   
                        </asp:Label>   
                    </td>  
                    <td style="width: 100px; text-align: center; vertical-align: top; border-left: solid 1px black; border-right: solid 1px black;">    
                        <asp:Label  ID="Label3" runat="server" Text='<%# Eval("col1")%>' >   
                        </asp:Label>   
                    </td>  
                    <td style="width: 130px; text-align: center; vertical-align: top; border-left: solid 1px black; border-right: solid 1px black;">   
                        <asp:Label  ID="Label4" runat="server" Text='<%# Eval("col2")%>' >   
                        </asp:Label>   
                    </td>  
                    <td style="width: 175px; text-align: center; vertical-align: top; border-left: solid 1px black; border-right: solid 1px black;">   
                        <asp:Label  ID="Label5" runat="server" Text='<%# Eval("col3")%>' >   
                        </asp:Label>  
                    </td>   
                     <td style="width: 150px; text-align: center; vertical-align: top; border-left: solid 1px black; border-right: solid 1px black;">   
                        <asp:Label  ID="Label6" runat="server" Text='<%# Eval("col4")%>' >   
                        </asp:Label>  
                    </td>   
                     <td style="width: 65px; text-align: center; vertical-align: top; border-left: solid 1px black; border-right: solid 1px black;">   
                       <asp:LinkButton ID="lbOrderNo" runat="server" CommandName="ViewOrder" Text='<%# DataBinder.Eval(Container.DataItem, "col5") %>'></asp:LinkButton>
                    </td>  
                    <td style="width: 90px; text-align: center; vertical-align: top; border-left: solid 1px black; border-right: solid 1px black;" runat="server">   
                        <asp:Label  ID="Label8" runat="server" Text='<%# Eval("col6")%>' >   
                        </asp:Label>  
                    </td>  
                    <td style="width: 75px; text-align: center; vertical-align: top; border-left: solid 1px black; border-right: solid 1px black;" runat="server">   
                        <asp:Label  ID="Label9" runat="server" Text='<%# Eval("col7")%>' >   
                        </asp:Label>  
                    </td>  
                    <td style="width: 75px; text-align: center; vertical-align: top; border-left: solid 1px black; border-right: solid 1px black;">   
                        <asp:Label  ID="Label10" runat="server" Text='<%# Eval("col8")%>' >   
                        </asp:Label>  
                    </td>  
                    <td style="width: 75px; text-align: center; vertical-align: top; border-left: solid 1px black;">   
                        <asp:Label  ID="Label11" runat="server" Text='<%# Eval("col9")%>' >   
                        </asp:Label>  
                    </td>                     
                </tr>
               </table>
                    <table class="job-info">
                        <tr class="TableData">   
                    <td style="width: 1100px">
                        <asp:Label ID="Label13" CssClass="details" runat="server" Text="Details:" ></asp:Label> <asp:Label  ID="Label12" BackColor="WhiteSmoke" runat="server" Text='<%# Eval("col10")%>' >   
                        </asp:Label>  
                    </td>
                </tr>
               </table>              
    
                </ItemTemplate>
            </asp:TemplateField>                
          <asp:TemplateField Visible="True" HeaderText="Accounting">
        <ItemTemplate>
         <asp:CheckBox ID="check"  runat="server" Enabled="False" />
         </ItemTemplate>
         <HeaderStyle Width="60px" />
         <ItemStyle HorizontalAlign="Center" />
          </asp:TemplateField>
                
        </Columns>
        </asp:GridView>
    

    【讨论】:

      猜你喜欢
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      相关资源
      最近更新 更多