2009-11-03 21 views
16

Bazı sorunum var, dataGridView'daki verilerimi saklamak için DataTable kullanıyorum. ,C# DataTable'daki veriler nasıl değiştirilir?

dt.Rows[1].ItemArray[3] = "VALUE"; 

ben hata ayıklama, ItemArray İstiyorum satır temsil Onun okey öyle, ama: Ben kodu kullanın

dt = new DataTable(); 
dt.Columns.Add("ID", typeof(int)); 
dt.Columns.Add("par", typeof(string)); 
dt.Columns.Add("max", typeof(int)); 
dt.Columns.Add("now", typeof(int)); 

dt.Rows.Add(new object[] { id++,i + " " + j++, strarr[0], strarr[1] }); // ... etc etc 

dataGridView1.DataSource = dt; 

şimdi bazı değişiklikler yapmak istiyorum: Veri böyle girişinin yapılıp yapılmadığından hala herhangi bir değişiklik yapamam, neyin var? DataTable nasıl güncellenir ??? Ben Googling ediyorum ve bunu değiştirirken

cevap

14

dt.Rows[1].ItemArray size öğe diziler bir kopyasını verir :(şey, orijinalini değiştirerek değiliz

Sadece yapabilirsiniz.:.

dt.Rows[1][3] = "Value"; 
tüm satır değerlerini değiştirmek istediğinizde

ItemArray özelliği kullanılır.

ex .:

dt.Rows[1].ItemArray = newItemArray; 
38

SetField yöntemi deneyin:

table.Rows[i].SetField(column, value);
table.Rows[i].SetField(columnIndex, value);
table.Rows[i].SetField(columnName, value);

Bu işi ve kullanma Satırlar [i] [j] biraz "daha temiz" olduğunu almalısınız.

+0

+1 - Sizin önerileriniz, bir dizi kullanan örneklerden çok daha temizdir. Örneğiniz, bir dizideki pozisyona göre ima edilen alan yerine alan adının açık bir şekilde tanımlanmasını sağlar. Sanırım dizinin kullanımı ucuz ve tembel. Gelecekteki bakımlarda kesinlikle hata riskini artırır. Ayrıca, veri tablosu nesnesi bir veritabanı yapısından türetilirse ve tablo tanımının ortasında bir sütun eklemek gibi, bu veritabanı yapısının değişmesi durumunda, dizi yönteminin kullanılması potansiyel olarak bir çalışma zamanı hatası verebilir veya daha kötüsü - belirlenemeyen bozuk veri. – barrypicker

7

Muhtemelen dt.Columns["columnName"].ReadOnly = false; özelliğini ayarlamalısınız.

+2

dt.columns olmalı [n]. –

İlgili konular