Announcement

Collapse
No announcement yet.

Datagrid im Wpf Daten werden angezeigt sind aber schreibgeschützt

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

  • Datagrid im Wpf Daten werden angezeigt sind aber schreibgeschützt

    Warum werden die Daten aus diesem Load Ereignis nur schreibgeschützt angezeigt?
    Schreibgeschützt, damit ist gemeint, ich kann den Curser in keines der Felder setzten. Bei einem click, passiert nichts, bei doppelclick hab ich diesen Error:
    TowWay oder OneWayToSource Bindungen functionieren nicht mit der schreibgeschützten Eigenschaft 'ShipCountry'.

    Ich dachte zunächst, es liegt wohl am JOIN, aber selbst mit dem einfachen string bleibt das so.


    Hier zunächst der behind code, danach der xaml

    Code:
    public partial class MainWindow : Window
        {
            NorthEntities db = new NorthEntities();
    
            public MainWindow()
            {
                InitializeComponent();
            }
    
    private void Window_Loaded(object sender, RoutedEventArgs e)
            {
               
    
                var qCustOrder = from Cust in db.Customers
                               join Ord in db.Orders
                               on Cust.CustomerID equals Ord.CustomerID
                               orderby Cust.CompanyName
                               select new { Cust.CompanyName, Ord.OrderDate };
             
               //var qCustOrder = from Ord in db.Orders
                                 select new { Ord.ShippedDate, Ord.ShipAddress };
    
                gridCustOrd.ItemsSource = qCustOrder.ToList();          
            }
    }
    Hier der XAML Code
    Code:
    <Window x:Class="Wpf_Entity_Connect.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525"
            xmlns:local="clr-namespace:Wpf_Entity_Connect"
            Loaded="Window_Loaded">      
    
            <Grid Name="grid1">
    
                <DataGrid Height="250" Name="gridProducts"    
                    AutoGenerateColumns="True" AutoGeneratingColumn="gridProducts_AutoGeneratingColumn">
    
                    <DataGrid.Columns>
                        <DataGridTextColumn Header="Bestell-Nr." 
                                Binding="{Binding OrderID}"/>
                        <DataGridTextColumn Header="CustomerID" 
                                Binding="{Binding CustomerID}"/>
                        <DataGridTextColumn Header="Stadt" 
                                Binding="{Binding ShipCity}"/>
                        <DataGridTextColumn Header="Land" 
                                Binding="{Binding ShipCountry}"/>
    
                        <DataGridTextColumn Header="Adresse" 
                                Binding="{Binding ShipCountry}"/>              
    
                    </DataGrid.Columns>              
                </DataGrid>  
    
            </Grid>
    
    </Window>
    JonDonym: privacy needs anonymity more than ever

  • #2
    [HIGHLIGHT=C#]new { Cust.CompanyName, Ord.OrderDate };[/HIGHLIGHT]

    Du erzeugst so einen neuen anonymen Typ deren erzeugten Properties sind immer readonly (aka haben nur einen getter). Wenn du etwas änderbares möchtest mußt du da einen konkrete vordefinierte Klasse benutzen.

    Comment


    • #3
      Originally posted by Ralf Jansen View Post
      [HIGHLIGHT=C#]... einen konkrete vordefinierte Klasse benutzen.
      DIe syntax erlaubt mir aber nur diese zwei formen
      Code:
       var departmentQuery = from d in schoolContext.Department.Include("Course")
                                        orderby d.Name
                                        select new { d.Name, d.Administrator, d.DepartmentID };
      Oder

      Code:
        var departmentQuery = from d in schoolContext.Department.Include("Course")
                                        orderby d.Name
                                        select d;
      Würde bedeuten solch ein query gibt mir immer alle felder, und welche ich letztlich sehen will, bestimm ich via wpf?
      JonDonym: privacy needs anonymity more than ever

      Comment


      • #4
        Würde bedeuten solch ein query gibt mir immer alle felder, und welche ich letztlich sehen will, bestimm ich via wpf?
        Das wäre näher an dem wie es gedacht ist, ja. Wenn du die Daten ändern möchtest willst du die ja bestimmt auch die Änderungen irgendwann wieder zurückschreiben in die Datenbank. Und das Changetracking läuft auf bekannten Entitäten und nicht auf dynamischen Typen.

        Wenn es dir nur um das ändern geht nicht darum das die Klasse auch automatisch in eine DB zurückgeschrieben werden kann dann kannst du auch ein beliebige andere Klasse benutzen. Es muß kein automatischer Typ sein oder eine generierte Entität.

        [HIGHLIGHT=C#]public class MeineLiebeKlasse
        {
        public irgendeinTyp Feld1 { get; set; }
        public irgendeinTyp Feld2 { get; set; }
        public irgendeinTyp Feld3 { get; set; }
        }

        var departmentQuery = from d in schoolContext.Department.Include("Course")
        orderby d.Name
        select new MeineLiebeKlasse{
        Feld1 = d.Name,
        Feld2 = d.Administrator,
        Feld3 = d.DepartmentID
        };[/HIGHLIGHT]

        Comment


        • #5
          leuchtet ein, wäre ich aber nicht drauf gekommen, man dankt
          JonDonym: privacy needs anonymity more than ever

          Comment

          Working...
          X