2016-03-29 11 views
0

Ich habe eine Gridview enthält 30 Spalten, wo einige Spalten muss ich einzelne Spalte oben setzen, dh ich habe Leaf Name,Leaf Code,Leaf Value,Leaf Vendor Code,Leaf Id,Leaf ZOnal,Leaf Leveller Spalten, wo ich eine einzige Spalte oben geben muss als Leaves Details. Ich habe folgenden Code in rowdatabound mit keinem Erfolg, neue Single-Spalte kommt zuallererst. Könnten Sie mir bitte sagen, was ich falsch gemacht habe.Eine wichtigere Sache, die ich getan habe, ist, setze ich gridview Eigenschaft PagerSettings Position top, so dass auf die Spitze kommen könnte Gitter als Indexwerte 1,2,3 usw.Multi-Spalten-Header in ASP.NET GridView

hier ist mein gridview

<asp:GridView ID="grdcell" runat="server" AutoGenerateColumns="False" AllowPaging="true" PageSize="13" DataKeyNames="firstname,location" 
       CellPadding="4" ForeColor="#333333" OnPageIndexChanging="grdNewcells_PageIndexChanging" OnRowDataBound="grdcell_RowDataBound" > 
       <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> 
       <Columns> 
        <asp:TemplateField HeaderText="Insert" HeaderStyle-HorizontalAlign="Left"> 
         <HeaderTemplate> 
          <asp:CheckBox ID="insertall" Text="Insert All" onclick="checkAll(this);" runat="server" /> 
         </HeaderTemplate> 
         <ItemTemplate> 
          <asp:CheckBox ID="insertChk" runat="server" /> 
         </ItemTemplate> 
         <HeaderStyle HorizontalAlign="Left"></HeaderStyle> 
        </asp:TemplateField> 
        <asp:BoundField DataField="Leaf_NAME" HeaderText="Leaf Name" SortExpression="Leaf_NAME"></asp:BoundField> 
        <asp:BoundField DataField="Leaf_CODE" HeaderText="Leaf Code" SortExpression="Leaf_CODE"></asp:BoundField> 
        <asp:BoundField DataField="Leaf_Value" HeaderText="Leaf Value" SortExpression="Leaf_Value"></asp:BoundField> 
        <asp:BoundField DataField="LeafVENDOR_CODE" HeaderText="Leaf Vendor Code" SortExpression="LeafVENDOR_CODE"></asp:BoundField> 
        <asp:BoundField DataField="Leaf_ID" HeaderText="Leaf Id" SortExpression="Leaf_ID"></asp:BoundField> 
        <asp:BoundField DataField="Leaf_ZOnal" HeaderText="Leaf ZOnal" SortExpression="Leaf_ZOnal"></asp:BoundField> 
        <asp:BoundField DataField="Leaf_Leveller" HeaderText="Leaf Leveller" SortExpression="Leaf_Leveller"></asp:BoundField> 
        <asp:BoundField DataField="Loaction" HeaderText="Loaction" SortExpression="Loaction"></asp:BoundField> 

und die Zusammenarbeit de, was ich in row data bound tat, wie unten

GridViewRow gvRow = e.Row; 
       if (gvRow.RowType == DataControlRowType.Header) 
       { 
        if (gvRow.Cells[1].Text == "Leaf_NAME") 
        { 
         gvRow.Cells.Remove(gvRow.Cells[1]); 
         GridViewRow gvHeader = new GridViewRow(0, 0, DataControlRowType.DataRow, DataControlRowState.Insert); 
         TableCell headerCell0 = new TableCell() 
         { 
          Text = "Leaves Details", 
          HorizontalAlign = HorizontalAlign.Center, 
          RowSpan = 6 
         }; 

         gvHeader.Cells.Add(headerCell0); 

         grdcell.Controls[0].Controls.AddAt(0, gvHeader); 
        } 
       } 
+1

Isit erreichbar ?? – peter

+0

Ich hatte die gleiche Frage wie @peter. Ich musste in meiner aktuellen Arbeit an vielen Stellen etwas Ähnliches machen, aber ich verwende den umgekehrten Ansatz: eine einzelne Spalte mit einem TemplateField, das die Unterspalten enthält. – ConnorsFan

+0

ist es die gleiche Frage ?? hast du den Code? – peter

Antwort

0

Um „Gruppe“ mehr Spalten in einem gemeinsamen Header (mit Subkopfabschnitte) gezeigt, verwende ich eine Template. 2 Unterspalten, würde es so aussehen:

<asp:TemplateField HeaderStyle-HorizontalAlign="Center"> 
    <HeaderTemplate> 
     <table runat="server" class="leafCommonHeader" align="center" cellpadding="0" cellspacing="0"> 
      <tr class="multiColumnMainHeader"> 
       <td colspan="2"> 
        <asp:Label runat="server" CssClass="leafHeader" Text="Leaf Details" /> 
       </td> 
      </tr> 
      <tr runat="server"> 
       <td class="leafNameField"> 
        <asp:LinkButton runat="server" CssClass="leafHeader" OnCommand="gvLeavesColumnSort" CommandArgument="LeafName" Text="Name" /> 
       </td> 
       <td class="leafNameField"> 
        <asp:LinkButton runat="server" CssClass="leafHeader" OnCommand="gvLeavesColumnSort" CommandArgument="LeafCode" Text="Code" /> 
       </td> 
      </tr> 
     </table> 
    </HeaderTemplate> 
    <ItemTemplate> 
     <table runat="server" class="leafCommonItem" cellpadding="0" cellspacing="0"> 
      <tr> 
       <td class="leafNameField"> 
        <asp:Literal runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "LeafName")) %>' /> 
       </td> 
       <td class="leafCodeField"> 
        <asp:Literal runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "LeafCode") %>' /> 
       </td> 
      </tr> 
     </table> 
    </ItemTemplate> 
</asp:TemplateField> 

Die Link-Taste in der Subkopfabschnitte gibt es die Art der Unterspalten zu implementieren. Ich habe ein paar CssClass Attribute hinzugefügt, mit denen die Zellen und Etiketten angepasst werden können. Die CSS-Klassen leafNameField und leafCodeField können z. B. den Wert ihrer Spalte setzen.

Haftungsausschluss: Dieser Code wurde nicht mit aktiviertem Paging getestet.

+0

Irgendwie funktioniert das nicht für mich – peter