Announcement

Collapse
No announcement yet.

DataGrid Sort, wenn Tabellenüberschrift über 2 Rows gebunden wurde

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DataGrid Sort, wenn Tabellenüberschrift über 2 Rows gebunden wurde

    Hi,

    ich hoffe ihr könnte das Problem (die Fragestellung) verstehen:

    Bei einem DataGridList, habe ich eine Tabellenüberschrift über 2 Rows gebunden habe (Überschrift 3):
    bsp:
    TableCell dgCell0 = new TableCell();
    dgCell0.RowSpan = 2;


    Code:
         	    |           Irgendwas                |
    Überschrift3 |Überschrift 1 | Überschrift 2           |
    ---------------+---------------------------------------
         	   |	          |                      |

    Nun will ich noch das Sortieren aller Spalten ermöglichen,
    für die Spalten "Überschrift 1" und "Überschrift 2" habe ich auch schon das Sortieren fertig - und funktioniert

    da ich es im HTML Code eingebunden habe, Beispiel:
    Code:
    <ItemTemplate>
    <%# DataBinder.Eval(Container, "DataItem.DATACOLUMNNAME1")%>
    </ItemTemplate>

    bzw, hier der ganze DataGridList Aufbau:

    Code:
    <asp:datagrid id="_dgridList" runat="server" Width="95%" ShowFooter="True" AutoGenerateColumns="False" AllowSorting="True">
    <Columns>				
    <asp:TemplateColumn runat="server" HeaderText="Überschrift 1" SortExpression="DATACOLUMNNAME1">	
    <ItemStyle Width="1%" HorizontalAlign="Right" CssClass="ConditionFieldCenter"></ItemStyle>
    <ItemTemplate>
                            <%# DataBinder.Eval(Container, "DataItem.DATACOLUMNNAME1")%> </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn runat="server" HeaderText="Überschrift 2" SortExpression="DATACOLUMNNAME2">	
    <ItemStyle Width="1%" HorizontalAlign="Right" CssClass="ConditionFieldCenter"></ItemStyle>
    <ItemTemplate>
                            <%# DataBinder.Eval(Container, "DataItem.DATACOLUMNNAME2")%> </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn>
    <HeaderTemplate>	
                               Template Column 1 (Überschrift3)
    </HeaderTemplate>	
    <ItemStyle Width="6%" HorizontalAlign="Right" CssClass="ConditionFieldRight">
    </ItemStyle>
    <ItemTemplate>
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    </asp:datagrid>


    Nun benötige ich aber noch das Sortieren für "Überschrift 3"
    da ich aber diese Spalte im ItemCreate event (codeBehind)
    erzeuge, weis ich nicht,
    wie ich nun den DataItem dort binde, so dass ich auch diese Spalte sortieren kann



    Code:
    private void _dgridList_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
                     DataGridItem dgItem = new DataGridItem( 1, 0, ListItemType.Header);
    				
    		TableCell dgCell0 = new TableCell();
    		dgCell0.RowSpan = 2;
    		dgCell0.Text = "Überschrift3";
    		dgCell0.Width = Unit.Percentage(3);
    		dgItem.Cells.Add(dgCell0);
    
    		TableCell dgCell1 = new TableCell();
    		dgCell1.ColumnSpan = 2;
    		dgCell1.Text = "Irgendwas";
    		dgCell1.Width = Unit.Percentage(24);
    		dgItem.Cells.Add(dgCell1);
    		}

    Wie kann ich das Sortieren nun auch für "Überschrift 3" machen?
    bzw. wie mache ich das <%# DataBinder.Eval(Container, "DataItem.DATACOLUMNNAME1")%>
    für Überschrift 3 ?


    Grüße
    rayman

  • #2
    ich habe nun einfach das GridLayout geändert

    so dass keine ColumnSpan das ganze durcheinander macht

    damit ist es auch einfacher das Grid-Sort zu realisieren

    Comment

    Working...
    X