Hallo,

> 
> Ich habe eine Class x und will diese in eine matrix 
> reinschreiben. also matrix(x,y) = x
> 
> Dieses soll dann an einem datagrid gebunden werden und um
> das ganze noch spanneder zu machen eine propertie aus dem
> Class steuert das CSS der jeweiligen zelle.
> 
> Habe das schon als collection versucht nur dann 
> zeigt mir das datagrid nur den count an.
> 
> 
> Irgend wie bekomme ich das heue nicht hin :-(

Angenommen Du hast die Klasse Product:

        public class Product
        {
                private int                             id;
                private string                  name;
                private decimal                 unitPrice;
                private bool                    isDiscontinued;

                public Product(int ID, string Name, decimal UnitPrice, bool
IsDiscontinued)
                {
                        this.ID                                 = ID;
                        this.Name                               = Name;
                        this.UnitPrice                  = UnitPrice;
                        this.IsDiscontinued             = IsDiscontinued;
                }


                public int ID
                {
                        get { 
                                return id; 
                        }
                        set {   
                                id = value; 
                        }
                }


                public string Name
                {
                        get {   
                                return name; 
                        }
                        set {   name = value; }
                }


                public decimal UnitPrice
                {
                        get {   
                                return unitPrice; 
                        }
                        set { 
                                unitPrice = value;
                        }
                }


                public bool IsDiscontinued
                {
                        get { 
                                return isDiscontinued; 
                        }
                        set {   
                                isDiscontinued = value; 
                        }
                }
}

dann leitest Du Dir von ArrayList eine Custom Collection
ab:

        public class ProductsCollection: ArrayList {
                public enum ProductsCollectionFields {
                        Name,
                        UnitPrice
                }

                public void Sort(ProductsCollectionFields sortField, bool
isAscending) {
                        switch (sortField) {
                                case ProductsCollectionFields.Name:
                                        base.Sort(new
ProductNameComparer());
                                        break;
                        }

                        if (!isAscending) base.Reverse();
                }

                private sealed class ProductNameComparer : IComparer {
                        public int Compare(object x, object y) {
                                Product first   = (Product) x;
                                Product second  = (Product) y;
                                return first.Name.CompareTo(second.Name);
                        }
                }

                private sealed class PriceComparer : IComparer {
                        public int Compare(object x, object y) {
                                Product first   = (Product) x;
                                Product second  = (Product) y;
                                return
first.UnitPrice.CompareTo(second.UnitPrice);
                        }
                }
        }


Das ganze kannst Du dann im DataGrid verwenden:

<asp:DataGrid id="dgrProducts" runat="server" BorderColor="#CC9966"
BorderStyle="None" BorderWidth="1px" BackColor="White" CellPadding="4"
AllowPaging="True" Width="500px" AutoGenerateColumns="False"
allowsorting="True">
<SelectedItemStyle Font-Bold="True" ForeColor="#663399" BackColor="#FFCC66">
</SelectedItemStyle>

<ItemStyle ForeColor="#330099" BackColor="White">
</ItemStyle>

<HeaderStyle Font-Bold="True" ForeColor="#FFFFCC" BackColor="#990000">
</HeaderStyle>

<FooterStyle ForeColor="#330099" BackColor="#FFFFCC">
</FooterStyle>

<Columns>
<asp:BoundColumn DataField="ID" HeaderText="ID">
<HeaderStyle HorizontalAlign="Center">
</HeaderStyle>
<ItemStyle HorizontalAlign="Right">
</ItemStyle>
</asp:BoundColumn>
<asp:templatecolumn sortexpression="name">
        <headerstyle horizontalalign="Center" />
        <headertemplate>
                Name
                <!--<asp:linkbutton id="lbtHeaderName" runat="server"
commandname="Sort">Produkt-Bezeichnung</asp:linkbutton>-->
        </headertemplate>
        <itemtemplate>
                <%# DataBinder.Eval(Container, "DataItem.Name") %>
        </itemtemplate>
</asp:templatecolumn>
<asp:BoundColumn DataField="UnitPrice" HeaderText="Einheitspreis"
DataFormatString="{0:c}" sortexpression="unitprice">
<HeaderStyle HorizontalAlign="Center">
</HeaderStyle>

<ItemStyle HorizontalAlign="Right">
</ItemStyle>
</asp:BoundColumn>
<asp:TemplateColumn HeaderText="Abgek&#252;ndigt">
<HeaderStyle HorizontalAlign="Center">
</HeaderStyle>

<ItemStyle HorizontalAlign="Center">
</ItemStyle>

<ItemTemplate>
<asp:CheckBox ID="chbDiscontinued" Runat="server" Enabled="False"/>
<!--Checked='<%# DataBinder.Eval(Container, "DataItem.IsDiscontinued")%>'-->
</ItemTemplate>
</asp:TemplateColumn>
</Columns>

<PagerStyle HorizontalAlign="Center" ForeColor="#330099" BackColor="#FFFFCC"
Mode="NumericPages">
</PagerStyle></asp:DataGrid>

oder auch z.B. im ItemDataBound darauf zugreifen:

                private void dgrProducts_ItemDataBound(object sender,
DataGridItemEventArgs e) {
                        // Fill Checkboxes
                        if(     e.Item.ItemType == ListItemType.Item || 
                                e.Item.ItemType ==
ListItemType.AlternatingItem) {
                                Product product = (Product)e.Item.DataItem;
        
((CheckBox)e.Item.Cells[3].Controls[1]).Checked = product.IsDiscontinued;
                        }
                }

hoffe, das hilft ein wenig ;-)

Gruss

Alex


_______________________________________________
Asp.net Mailingliste, Postings senden an:
[email protected]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/asp.net

Antwort per Email an