none
einzelne Zellen im DataGrid auslesen und neu beschreiben RRS feed

  • Allgemeine Diskussion

  • Hallo,

    ich arbeite mit einem DataGrid und möchte daraus einzelne Daten (SpaltenHeaderName / Zeilennummer) auslesen und ersetzen.
    Alles was ich dazu gefunden habe funktioniert nicht.
    Kann mir da jemand weiterhelfen?

    Frank


    www.mehlhop.com

    • Typ geändert Ciprian Bogdan Mittwoch, 22. Januar 2014 11:47 keine Rückmeldung des Fragestellenden
    Freitag, 20. Dezember 2013 07:29

Alle Antworten

  • Wenn ich deine Frage richtig verstehe, sollte es eigentlich so laufen:

    Dim data As String = DataGridView1.SelectedRows(0).Cells(5).Value.toString()

    und in C#:

    dataGridView1.Rows[rowIndex].Cells[columnIndex].Value = value;

    lg
    Manuel

    Freitag, 20. Dezember 2013 07:48
  • Oh, ich suche für C# und WPF,
    da gibt es kein DataGridView sonder DataGrid und die Eigenschaft Rows gibt es da leider auch nicht.

    Frank


    www.mehlhop.com

    Freitag, 20. Dezember 2013 08:20
  • Achso, ok... Das macht die ganze Sache natürlich etwas komplizierter...
    Ich denke, am einfachsten ist es, wenn du das DataGrid an ein ItemSource bindest.

    Hier ein Script-Beispiel , wie es jemand auf Stackoverflow gelöst hat:

    public partial class MainWindow : Window
    {
        private ObservableCollection<ConnectionItem> _connectionitems = new ObservableCollection<ConnectionItem>();
    
        public MainWindow()
        {
            InitializeComponent();
            ConnectionItems.Add(new ConnectionItem { Name = "Item1", Ping = "150ms" });
            ConnectionItems.Add(new ConnectionItem { Name = "Item2", Ping = "122ms" });
        }
    
        public ObservableCollection<ConnectionItem> ConnectionItems
        {
            get { return _connectionitems; }
            set { _connectionitems = value; }
        }
    
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            // to change a value jus find the item you want in the list and change it
            // because your ConnectionItem class implements INotifyPropertyChanged
            // ite will automaticly update the dataGrid
    
            // Example
            ConnectionItems[0].Ping = "new ping :)";
        }
    }
    
    public class ConnectionItem : INotifyPropertyChanged
    {
        private string _name;
        private string _ping;
    
        public string Name
        {
            get { return _name; }
            set { _name = value; NotifyPropertyChanged("Name"); }
        }
    
        public string Ping
        {
            get { return _ping; }
            set { _ping = value; NotifyPropertyChanged("Ping"); }
        }
    
        public event PropertyChangedEventHandler PropertyChanged;
        /// <summary>
        /// Notifies the property changed.
        /// </summary>
        /// <param name="property">The info.</param>
        public void NotifyPropertyChanged(string property)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(property));
            }
        }
    }

    Ich denke dieses Script sollte dein Problem lösen.

    Hier evtl. als XAML:

    <Window x:Class="WpfApplication4.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:local="clr-namespace:WpfApplication4"
            xmlns:properties="clr-namespace:WpfApplication4.Properties"
            Title="MainWindow" Height="300" Width="400" Name="UI" >
        <Grid>
            <DataGrid Name="dataGridView" ItemsSource="{Binding ElementName=UI,Path=ConnectionItems}" Margin="0,0,0,40" />
            <Button Content="Change" Height="23" HorizontalAlignment="Left" Margin="5,0,0,12" Name="button1" VerticalAlignment="Bottom" Width="75" Click="button1_Click" />
        </Grid>
    </Window>

    Solltes du dir die Beschreibung in EN durchlesen  und die Quelle ansehen wollen:
    http://stackoverflow.com/questions/13906826/edit-cell-in-datagrid-wpf

    lg
    Manuel

    Freitag, 20. Dezember 2013 08:33
  • Vielen herzlichen Dank Manuel.
    Das ist ja ziemlich komplex.
    Da frage ich mich, ob ich bei meiner Herangehensweise an mein Problem auf dem richtigen Weg bin
    und möchte dafür einen neuen Thread eröffnen.

    www.mehlhop.com

    Freitag, 20. Dezember 2013 09:27
  • Sollte meine Antwort richtig gewesen sein, bitte markiere sie als Antwort!
    Wenn ich am Nachmittag Zeit habe, werfe ich einen Blick auf den neu eröffneten Thread...

    lg
    Manuel

    Freitag, 20. Dezember 2013 10:10
  • Hi,
    wenn Du die Datenzeilen über die View-Eigenschaft einer CollectionViewSource bindest, hast Du als aktuelles Objekt (CurrentItem) die aktuell ausgewählte Datenzeile. In diesem Datenobjekt kannst Du auf die Eigenschaften (Spalten / Felder) zugreifen und hast dann den Inhalt der gewünschten Zelle.

    --
    Peter

    Freitag, 20. Dezember 2013 11:25
  • *****************************************************************************************************

    Dieser Thread wurde mangels weiterer Beteiligung des Fragestellenden ohne bestätigte Lösung abgeschlossen.

    Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.

    *****************************************************************************************************

    Ciprian Bogdan, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-PrinzipEntwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.





    Mittwoch, 22. Januar 2014 11:47