C#nedir?com Homepage
Forum Home Forum Home > C# / .NET > C#
  New Posts New Posts RSS Feed - ListView Sorunu ???
  FAQ FAQ  Forum Search   Events   Register Register  Login Login

ListView Sorunu ???

 Post Reply Post Reply
   

Author
Message
thus View Drop Down
Senior Member
Senior Member


Joined: 05 Temmuz 2003
Location: Türkiye
Status: Offline
Points: 477
Post Options Post Options   Thanks (0) Thanks(0)   Quote thus Quote  Post ReplyReply Direct Link To This Post Topic: ListView Sorunu ???
    Posted: 21 Haziran 2004 at 20:10

Yaa çok ciddi bir sorunum var, ve bir türlü çözemedim... İki sınıfım var.

class A : Form{
    public void Liste(int x){
        // Burada bir ListView var. Adı listView1. Bu metot aldığı rakamlara göre kendi
        // içindeki sorguları çalıştırıyor.
    }
    public void Cagir(){
        // B sınıfı yeni bir pencerede çağırılıyor. Burada bazı sorgular çalıştırılıyor
        // sonra bir rakam Liste metoduna gönderiliyor.
    }
}

class B : Form{
    public B(){
        // sorgu çalıştırılıyor ve tekrar a sınıfındaki Liste() metodu çağırılarak bu 
        // pencere kapatılıyor.
        A a = new A();
        a.Liste(4);
    }
}

Çok basit bir şemayla yapıyı göstermek istedim. A sınıfı açıldığında Liste() metodu programın bir yerinde çağırılıyor ve penceredeki listView1'de çok güzel veriler gözüküyor.

Ancak programımın bir yerinde bir pencere daha açılması gerekiyor ( - ki bu B sınıfı ). B sınıfı ilgili sorguları çalıştırıyor ve A sınıfındaki Liste() isimli metodu parametre göndererek çağırıyor.  Sonuç olarak Liste() metodu :

   - kendi içindeki sorguları çalıştırıyor,
   - sonra listView1 yeniden yaratılıyor,
   - hatta listView1'ın içine veriler satır satır ekleniyor ( - kontrol ettim ),

nedense ekranda tık yok. Penceredeki listView1 son bilgileri göstermiyor. Mevcut veriler yenilenmemiş!

Bazı testler yaptım. A sınıfı içinde, örneğin ListView.Clear() metodunu programın değişik metotlarında çalıştırdığımda çok güzel listView1 kendi içini boşaltıyor. Ancak aynı işlemi B sınıfında yaptığımda tık yok :

A a = new A();
a.listView1.Clear();

Sorunu anlayamadım. Neden başka bir pencere açtıktan ve işlem bitince kapatıldıktan sonra listView çalışmayabilir.

NOT : Programlama hatası veya mantık hatası aradım ama bulamadım.

Kilitlendim kaldım, internet'te bir sürü sitede araştırma yaptım, MSDN'i aradım ama bir sonuca ulaşamadım... Teşekkürler.

Back to Top
salim View Drop Down
Newbie
Newbie


Joined: 17 Haziran 2004
Location: Türkiye
Status: Offline
Points: 11
Post Options Post Options   Thanks (0) Thanks(0)   Quote salim Quote  Post ReplyReply Direct Link To This Post Posted: 22 Haziran 2004 at 10:15
Sorgu çalıştıktan sonra dataset i tekrar yüklüyormusun. Anladığım kadarıyla Sen veri tabanında bazı değişiklikler yaptığın halde beklediğin karşılığı alamıyorsun. eğer dogru anladıysam. ya dataset e yeni bilgileri yüklemiyorsun ya da yaptığın değişiklikleri veri tabanına update etmediğin için beklediğin karsılığı alamıyorsun . bence bu bölümlere bir daha dikkat et. Kolay gelsin
Back to Top
thus View Drop Down
Senior Member
Senior Member


Joined: 05 Temmuz 2003
Location: Türkiye
Status: Offline
Points: 477
Post Options Post Options   Thanks (0) Thanks(0)   Quote thus Quote  Post ReplyReply Direct Link To This Post Posted: 22 Haziran 2004 at 16:12

Evet şimdi sorunu çözdüm, ama yine bir sorunla daha karşılaştım, biri bitiyo diğeri başlıyo.

Aşağıdaki metodu ikinci kez çağırınca hata alıyorum. Tam SelectedIndex'te. Sebebi ne olabilir?

public void ComboBoxDoldur_Il(int Ilpozisyon){;
   
baglanti.Open();
    OleDbDataAdapter adapter =
new OleDbDataAdapter("SELECT * FROM il", baglanti);
    DataTable benimTablom =
new DataTable();
    adapter.Fill(benimTablom);

    comboBox1.DataSource = benimTablom;
   
comboBox1.DisplayMember = "il_ad";
   
comboBox1.ValueMember = "il_kod";
   
comboBox1.SelectedValue = Ilpozisyon;
   
try{
       
comboBox1.SelectedIndex = Ilpozisyon;
    }
   
catch{
       
MessageBox.Show(Convert.ToString(Ilpozisyon));
       
MessageBox.Show("hata burda");
   
}
   
baglanti.Close();
}

Back to Top
thus View Drop Down
Senior Member
Senior Member


Joined: 05 Temmuz 2003
Location: Türkiye
Status: Offline
Points: 477
Post Options Post Options   Thanks (0) Thanks(0)   Quote thus Quote  Post ReplyReply Direct Link To This Post Posted: 22 Haziran 2004 at 16:18
.ArgumentOutOfRangeException hatası alıyorum, ama metot ikinci kez çağırıldığında eleman sayısı artmıyor veya azalmıyor.
Back to Top
salim View Drop Down
Newbie
Newbie


Joined: 17 Haziran 2004
Location: Türkiye
Status: Offline
Points: 11
Post Options Post Options   Thanks (0) Thanks(0)   Quote salim Quote  Post ReplyReply Direct Link To This Post Posted: 22 Haziran 2004 at 16:30

sen aslında niye selected value değer atıyorsun

eğer combobox ta  yeteri kadar eleman varsa ve sen comboBox1.SelectedIndex = Ilpozisyon; ile konumlanıyorsan comboBox1.SelectedValue = Ilpozisyon; yapmana gerek yok gibi istersen bu satırı iptal et ve comboboxta kaç tane eleman olduğunu kontrol et

Back to Top
Yekbun View Drop Down
Moderator Group
Moderator Group


Joined: 07 Temmuz 2003
Location: Türkiye
Status: Offline
Points: 225
Post Options Post Options   Thanks (0) Thanks(0)   Quote Yekbun Quote  Post ReplyReply Direct Link To This Post Posted: 22 Haziran 2004 at 16:42

Sana tavsiyem  combolara  atama işlemini yapmadan önce şu şartı sorgula

if(comboBoxIlce.SelectedValue!=null)

         comboBoxIlce.SelectedValue = ILCE.ID;

Back to Top
thus View Drop Down
Senior Member
Senior Member


Joined: 05 Temmuz 2003
Location: Türkiye
Status: Offline
Points: 477
Post Options Post Options   Thanks (0) Thanks(0)   Quote thus Quote  Post ReplyReply Direct Link To This Post Posted: 22 Haziran 2004 at 16:48

comboBox1.SelectedIndex = Ilpozisyon;

ile comboBox' ta Ilpozisyon değişkeni ile belirtilen eleman aktif gözükmeli değil mi? Nedense metot ikinci kez çağırıldığı zaman Ilpozisyon değişkeninin değeri değişmesine rağmen comboBox'ta tık yok.

Herşeyi bir kenara bıraktım. Bari bu sorunu nasıl çözebilirim? Diğer sorunlarla ben uğraşmaya devam edebilirim herhalde...

Back to Top
thus View Drop Down
Senior Member
Senior Member


Joined: 05 Temmuz 2003
Location: Türkiye
Status: Offline
Points: 477
Post Options Post Options   Thanks (0) Thanks(0)   Quote thus Quote  Post ReplyReply Direct Link To This Post Posted: 23 Haziran 2004 at 13:46

Tekrar başa döndüm, combobox'ları hallettim :) Şimdi ilk sorduğum soruya dönücem :

listview'a aşağıdaki şekilde bilgi gönderiyorum. Ama ikinci kez bu metot çağırılmasına rağmen ( hatta oku.Read() ile teker teker satırlar ekleniyor ) işlemler bitince pencerede tık yok, veriler hiç değişmiyor, bu neden oluyor?

OleDbCommand komut = new OleDbCommand(sorgu, baglanti);

OleDbDataReader oku = komut.ExecuteReader();

while(oku.Read()){

ListViewItem item1 = new ListViewItem(Convert.ToString(oku[0]));

item1.SubItems.Add(Convert.ToString(oku[1]));

item1.SubItems.Add(Convert.ToString(oku[2]));

item1.SubItems.Add(Convert.ToString(oku[3]));

listView.Items.AddRange(new ListViewItem[]{item1});

}

Back to Top
thus View Drop Down
Senior Member
Senior Member


Joined: 05 Temmuz 2003
Location: Türkiye
Status: Offline
Points: 477
Post Options Post Options   Thanks (0) Thanks(0)   Quote thus Quote  Post ReplyReply Direct Link To This Post Posted: 23 Haziran 2004 at 15:20

İlgilenen ve bana üç gündür çözemediğim sorun konusunda yardımcı olabilecek kişilere yazdığım kodun tamamını zip'leyip mail olarak göndersem?

Belki ilgili kişiler kendi bilgisayarlarında programımı debug ederlerse  tam olarak nerede takıldığımı anlayabilirler...

Back to Top
enginço View Drop Down
Newbie
Newbie


Joined: 23 Haziran 2004
Location: Türkiye
Status: Offline
Points: 3
Post Options Post Options   Thanks (0) Thanks(0)   Quote enginço Quote  Post ReplyReply Direct Link To This Post Posted: 23 Haziran 2004 at 16:04

ilk soruna cevap olabilir sanırım, listview ı tekrar yüklediğin zaman eski pointer ını kaybeder.

bu nedenle eski selected hiçbir işe yaramaz azalıp artmasa da

şööle bişiy önerebilirim: listview ı clear etme, sadece refresh butonuna bastığında tekrar yüklet

Back to Top
thus View Drop Down
Senior Member
Senior Member


Joined: 05 Temmuz 2003
Location: Türkiye
Status: Offline
Points: 477
Post Options Post Options   Thanks (0) Thanks(0)   Quote thus Quote  Post ReplyReply Direct Link To This Post Posted: 23 Haziran 2004 at 16:10
Tekrar yükletmek nasıl oluyor? yani tekrar mı yaratmalıyım?
Back to Top
thus View Drop Down
Senior Member
Senior Member


Joined: 05 Temmuz 2003
Location: Türkiye
Status: Offline
Points: 477
Post Options Post Options   Thanks (0) Thanks(0)   Quote thus Quote  Post ReplyReply Direct Link To This Post Posted: 23 Haziran 2004 at 20:08

http://www.icsltd.com.tr/test/ziyaretci.rar

Bu adresten yazdığım kodu indirebilirsiniz. Bakmanız gereken bölüm ilce.cs , "Ara" düğmesine basılınca yeni bir pencere açılıyor, aranacak kayıt combobox'tan seçiliyor, yeni pencere kapanıyor, arkadaki pencerede bulunan ListView'da işlemler yapılmasına rağmen hiç birşey değişmiyor.

Teşekkürler.

Back to Top
Yekbun View Drop Down
Moderator Group
Moderator Group


Joined: 07 Temmuz 2003
Location: Türkiye
Status: Offline
Points: 225
Post Options Post Options   Thanks (0) Thanks(0)   Quote Yekbun Quote  Post ReplyReply Direct Link To This Post Posted: 24 Haziran 2004 at 09:53

Valla koduna baktım hayatımda gördüğüm en karışık kod.Senin amacın arama yaptıktan sonra verilen Ile göre olan ilceler mi listeye dolsun.Kodundan pek bileş anlayamadım.Bide debug edeceksin adım adım ilerleyeceksin başka çaresi yok bu işin.Ben windows uygalamalarmda genellikle listview kullanırım.ama senin karşılaştığın sorunla hiç karşılaşmadın.Sana yardımcı olumu bilmem ama kendi kulandığım kod yapısını göndereyim.Umarım işini görür.

_DataSet = Kanalizasyon.KANAL.getList_withISLEM_YILIandMAHALLE((decimal)comboBoxMAHALLE.SelectedValue,numericUpDown1.Value,false);

listViewListe.Items.Clear();

ListViewItem _li;

for(int i = 0;i <_DataSet.Count ;i++)

{

_li = new ListViewItem();

_li.Text = ((Kanalizasyon.KANAL)_DataSet.TypedDataSet[i]).ISLEM_YILI.ToString();

_li.Tag = (Kanalizasyon.KANAL)_DataSet.TypedDataSet[i];

listViewListe.Items.Add(_li);

_li.SubItems.Add(((Kanalizasyon.KANAL)_DataSet.TypedDataSet[i]).MAHALLE.ADI);

_li.SubItems.Add(((Kanalizasyon.KANAL)_DataSet.TypedDataSet[i]).GRUP_ADI);

_li.SubItems.Add(((Kanalizasyon.KANAL)_DataSet.TypedDataSet[i]).GRUP_FIYATI.ToString("###,###")

}

Kolay gelsin

 

Back to Top
thus View Drop Down
Senior Member
Senior Member


Joined: 05 Temmuz 2003
Location: Türkiye
Status: Offline
Points: 477
Post Options Post Options   Thanks (0) Thanks(0)   Quote thus Quote  Post ReplyReply Direct Link To This Post Posted: 24 Haziran 2004 at 10:32

Tamamdır, kod çok işime yaradı. Teşekkür ederim, bu sorununda üstesinden geldim.

Back to Top
 Post Reply Post Reply
  Share Topic   
   


Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 11.01
Copyright ©2001-2014 Web Wiz Ltd.