none
Textbox a Aktarma RRS feed

  • Genel Tartışma

  • Merhaba, 

    Şimdi ben 

    void YeniKaydet()
            {
                try
                {
                    Fonksiyonlar.TBL_MUHASEBEHESAPPLANI HesapKodu = new Fonksiyonlar.TBL_MUHASEBEHESAPPLANI();

                    HesapKodu.HESAPKODU = txtHesapKodu.Text;
                    HesapKodu.HESAPADI = txtHesapAdi.Text;
                    HesapKodu.HESAPSAVEUSER = MuhasebeOtomasyon.AnaForm.UserId;
                    HesapKodu.HESAPSAVEDATE = DateTime.Now;
                    DB.TBL_MUHASEBEHESAPPLANIs.InsertOnSubmit(HesapKodu);
                    DB.SubmitChanges();
                    Mesajlar.YeniKayit("Yeni Hesap Kodu Oluşturuldu.");
                    Listele();
                    Temizle();

                }
                catch (Exception e)
                {
                    Mesajlar.Hata(e);
                }
            }

    Metodu ile 

    GridControl üzerine bu şekilde kayıt işlemini yapıyorum. Listeleme işlemini de 

    void Listele() 
            {

                Liste.DataSource = DB.TBL_MUHASEBEHESAPPLANIs.OrderBy(p => p.HESAPKODU).Select(t => new { HESAP = (t.HESAPKODU.Length > 4 ? "\t\t\t" + t.HESAPKODU : t.HESAPKODU) + " - " + t.HESAPADI }); 

               
            
            }

    bu metod yardımı ile yapıyorum. Asıl yapmak istediğim olay şudur. GridControl üzerindeki listedeki kayıtların üzerine tıklama esnasından sonra Ana Hesap Kodu ve Ana Hesap Adı textbox larına nasıl aktarabilirim bunu öğrenmek istiyorum. Bu konu hakkında bana nasıl yardımcı olabilirisiniz acaba.

    3 Mayıs 2017 Çarşamba 21:21

Tüm Yanıtlar

  • txtHesapKodu.Text=gridView1.GetFocusedRowCellValue("HESAPKODU").ToString().Trim();
    txtHesapAdi.Text=gridView1.GetFocusedRowCellValue("HESAPADI").ToString();
    Bunu GridView in Double Click olayına yazarsın. 

    kdrgny@outlook.com


    • Düzenleyen KdrGny 3 Mayıs 2017 Çarşamba 21:44
    3 Mayıs 2017 Çarşamba 21:43
  • Bu şekilde aktarma işlemini denemiştim. Ancak bunda şu hatayı vermektedir. "Nesne başvurusu bir nesnenin örneğine ayarlanmadı." diye bir hata vermektedir. Bu hatayı listeleme metodunda olan bir durumdan dolayı vermektedir. Şundan dolayı olduğunu düşünüyorum. Şimdi tablo içerisindeki 2 adet kolonu gridcontrol üzerine birleştirerek listelenmesini sağlanmaktadır. HESAP KODU altında Hesap Kodu kolonu ve hesap adı kolonunu birleştirerek listelenmesi sağlanmaktadır. Bu birleştirmeyi ilk olarak ayırarak sonrasında textbozlara aktarılması gerekiyor diye düşünüyorum. Veya da başka bir çözümü vardır belkide. Ancak bu düzgün bir şekilde çalışmamaktadır.
    3 Mayıs 2017 Çarşamba 22:21
  • BindingSource kullan. Mantık olarak şöyle

    1- Sınıf seviyesinde BindingSource türünden bir nesne oluştur.

    BindingSource bnd = new BindingSource();

    2- Listele metodunda bindingsource nesnesine datasource ataması yap

    bnd.DataSource = DB.TBL_MUHASEBEHESAPPLANIs.OrderBy(.....);
    3- Listele metodunda GridControl e datasource olarak bindingsource nesnesini ver
    Liste.DataSource = bnd;
    4- Formun constructor metodunda textboxlara veriyi bağla. 
    textBox1.DataBindings.Add("Text", bnd, "HESAPKODU");
    textBox2.DataBindings.Add("Text", bnd, "HESAPADI");
    bundan sonra gridcontrol den veri seçtikçe textboxlar  değişecektir.
    4 Mayıs 2017 Perşembe 07:35
  • Olcay Bey kusurabakmayın. Göndermiş olduğunuz yapıyı internet üzerinden de program üzerinde uyarlamasını incelemeye çalıştım. Ancak tam anlamıyla bunun entegresini sağlayamadım. Uygun olursanız eğer bağlantı vererek bakma şansımız olur mu?
    4 Mayıs 2017 Perşembe 17:49
  • Olcay Bey bu 4. adımdaki textboxlara veri bağlama işleminde bir sıkıntı oldu sanırım. Bu kısmı aşar isem sorun ortadan kalkacak gibi görünmektedir. 
    4 Mayıs 2017 Perşembe 20:29
  • Nasıl bir sorun kodları paylaşırsan yardımcı olmaya çalışırım
    5 Mayıs 2017 Cuma 06:36
  • 

    Yukarıdaki ekranda görüldüğü gibi Hesap Kodu textbox sına hesap kodunu, hesap adı textbox sına hesap adını yazıyoruz. Daha sonra kaydet butonuna basıyoruz. Kaydetmek içinde aşağıdaki gibi kaydetme metodu tanımlıyorum. 

    void YeniKaydet()
            {
                try
                {
                    Fonksiyonlar.TBL_MUHASEBEHESAPPLANI HesapKodu = new Fonksiyonlar.TBL_MUHASEBEHESAPPLANI();

                    HesapKodu.HESAPKODU = txtHesapKodu.Text;
                    HesapKodu.HESAPADI = txtHesapAdi.Text;
                    HesapKodu.HESAPSAVEUSER = MuhasebeOtomasyon.AnaForm.UserId;
                    HesapKodu.HESAPSAVEDATE = DateTime.Now;
                    DB.TBL_MUHASEBEHESAPPLANIs.InsertOnSubmit(HesapKodu);
                    DB.SubmitChanges();
                    Mesajlar.YeniKayit("Yeni Hesap Kodu Oluşturuldu.");
                    Listele();
                    Temizle();

                }
                catch (Exception e)
                {
                    Mesajlar.Hata(e);
                }
            }

    Kaydet butonu altına da bu metodu çağırıyorum. Ancak bir şart ile bu metodu çağırıyorum. Sebebi de aynı hesap kodundan iki adet kaydetmesini engelliyorum. 

    private void btnKaydet_Click(object sender, EventArgs e)
            {
               if (DB.TBL_MUHASEBEHESAPPLANIs.Any(a=>a.HESAPKODU.Equals(txtHesapKodu.Text)))
               {
                   MessageBox.Show("Aynı Hesap Kodu Mevcuttur. Lütfen farklı bir Hesap Kodu Giriniz.", "Hesap Kodu Hatası", MessageBoxButtons.OK, MessageBoxIcon.Information);
               }
               else
               {
                   YeniKaydet();
               }  
            }

    Hesap kodunu 100 hesap adını da KASA yazıp kaydet butonuna tıklıyorum. Bu sayede 100 Hesap kodlu KASA adında bir tane ana hesap kodu oluşturuyorum. İkinci bir kayıtta 100 00 Hesap Kodu ve Merkez Kasa adında bir hesap adı altında bir kayıt daha açıyorum. Bu da 100 kodlu KASA adlı ana hesap kodunun bir alt kodu olmuş oluyor. Gridcontrolde de bunu görmekteyiz. Buraya kadar çalışmasında bir sıkıntı yoktur. Bu sıkıntı şurada başlamaktadır. Mesela 100 00 Kodlu Merkez Kasa adlı hesap kodunun düzelme işleminde gridcontrol üzerinde tıkladığımdan bu değerlerin textboxlara aktarımı sıkıntıya girmektedir. 

    Grincontrol ün Run Designer ına tıklayarak açılan ekrandan Columns sekmesi altında kolonları oluşturuyoruz. Bu oluşturma işleminde HESAPKODU adında bir kolon oluşturuyoruz. Bunun Name değerini HESAPKODU Caption değerini HESAP KODU ve FieldName değerini de HESAP olarak yazarak oluşturuyorum. Normalde FieldName değerininde HESAPKODU şeklinde yazarak oluşturmam lazım. Ancak Gridcontrol ün listelenme aşamasında aşağıdaki gibi yapıyorum. Bundan dolayı FieldName HESAP olarak yazıyorum. 

                  

    void Listele() 
            {
                BindingSource bnd = new BindingSource();
                bnd.DataSource = DB.TBL_MUHASEBEHESAPPLANIs.OrderBy(p => p.HESAPKODU).Select(t => new { HESAP = (t.HESAPKODU.Length > 4 ? "\t\t\t" + t.HESAPKODU : t.HESAPKODU) + " - " + t.HESAPADI });
                Liste.DataSource = bnd;

            }

    Yani listeleme aşamasında Hesap kodunu ve Hesap adını listeleme işlemini 100 - KASA ve 100 00 - Merkez Kasa şeklinde listelemeKtedir. Yani datebase deki iki kolonu birleştirerek listelemektedir. Bunun yeniden textbox lara ayırarak Hesap Kodunu Hesap Kodu textbox sına ve Hesap Adını da Hesap Adı textbox sına aktarılmasını sağlanması amaçlanmaktadır. Bu sayede de ya düzelme metodunu ya da silme metodunu çalıştırmak istemekteyim. 

         Umarım durumu tam anlamı ile anlatabilmişimdir. Şimdiden çok teşekkür ederim. 

    8 Mayıs 2017 Pazartesi 21:52
  • Konu hakkında bana nasıl yardımcı olabilirisiniz.
    9 Mayıs 2017 Salı 20:53
  • Olcay Bey bu konu hakkında ne yapabiliriz acaba.
    12 Mayıs 2017 Cuma 06:41
  • Olcay Bey kusura bakmayın sizi de rahatsı ediyorum. Bu konu hakkında bana yardımcı olma durumunuz varmıdır acaba. Tekrardan kusurabakmayın. Hayırlı akşamlar.
    13 Mayıs 2017 Cumartesi 17:26
  • Merhaba,

    Öncelikle DataGridView'ınızın size uygun olan bir event'ı ile bu işlemi yapmalısınız. (Ben örneğimde Cell Click'i kullandım. Herhangi bir sütunun üzerine tıklandığında çalışır.)

    Bu arada, DataSource'unuzda tüm bilgileri tek bir değişkene set etmişsiniz. Bunu ayırmalısınız, şu  şekilde;

     Liste.DataSource = DB.TBL_MUHASEBEHESAPPLANIs.OrderBy(p => p.HESAPKODU).Select(t => new { HESAPKODU = (t.HESAPKODU.Length > 4 ? "\t\t\t" + t.HESAPKODU : t.HESAPKODU) , HESAPADI = t.HESAPADI }); 
    DataSource'unuzu yukarıdaki gibi güncelleyiniz.

    CellClick event'ında seçilen index'in bilgisini alırsak,datagridview'de ki o index'in istediğiniz sütununun value'sunu alabiliriz. Örneğin;

    dataGridView1.CellClick += dataGridView1_CellClick; //DataGridView'ımızın CellClick event'ını tanımlıyoruz. void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)//DataGridView'ımızın CellClick event'i { DataGridView dv = (DataGridView)sender;//istek gelen datagridview nesnesi string hesapKodu = dv.Rows[e.RowIndex].Cells["HESAPKODU"].Value.ToString(); string hesapAdi = dv.Rows[e.RowIndex].Cells["HESAPADI"].Value.ToString();

    }

    Çalışmalarınızda kolaylıklar dilerim.


    Code is Poetry

    13 Mayıs 2017 Cumartesi 17:48
    Moderatör
  • Şimdi ilk olarak Umut bey çok teşekkür ederim. 

     Liste.DataSource = DB.TBL_MUHASEBEHESAPPLANIs.OrderBy(p => p.HESAPKODU).Select(t => new { HESAPKODU = (t.HESAPKODU.Length > 4 ? "\t\t\t" + t.HESAPKODU : t.HESAPKODU) , HESAPADI = t.HESAPADI });

    Yukarıda ki kodları Listele metodu altına yazmamı söylediniz sanırım. Bu şekilde yaptığımda tablo içeriğindeki kayıtların GridControl altında görüntülenmesinde sanırım bir sıkıntı var. 

    Bunun yanında component olarak dataGridView kullanmadım da GridControl componentini kullandım. Bunun da CellClick eventi sanırım yok. GridControl altında bu işlemleri nasıl

    yapabilirim ki. Kusurabakmayın uğraştırdığım için sizi.

    13 Mayıs 2017 Cumartesi 21:49
  • Benim asıl yapmak istediğim olay yukarıdaki gibi bir çizelge hazırlamak. Bunların kayıtlarını sağlamak. Üzerilerine tıklandığında kayıtların textbox a aktarılarak ya silinebilmesini yadan içeriğinde değişiklik yapılmasını sağlamaktır. 

    13 Mayıs 2017 Cumartesi 22:34
  • Merhaba,

    Siz anonymous type ile "HESAP = hesapkodu + " - " +hesapadı" şeklinde iki string değeri birleştirerek kullanmıştınız, ben iki farklı değer oluşturdum, yani veri gösterimi ile ilgili bir problem olmaması gerek.

    Diğer konu ile ilgili olarak,ben o kodları DataGridView için yazmıştım. DevExpress DataGrid'de daha farklı.

    Burada DevExpress'in dökümanları var. İnceleyebilir misiniz?


    Code is Poetry

    13 Mayıs 2017 Cumartesi 22:40
    Moderatör
  • Yani böyle bir tablo oluşturmak zor bir durummudur. Ben böyle bir hesap planı oluşturacağım. Daha sonrada bu hesap  kodlarını program içerisindeki diğer alanlar ile entegre edeceğim. Bu entegrasyonla da raporlamalar yapılmasını mizan alma gibi işlemlerin yapılmasını sağlamaktır amacım. Aslında profosyenel olmadığım için yani yapmak istediğim yapı ile bilgim tam anlamı ile örtüşmüyor sanırım. İşin türkçesi ben bu işte profosyen değilim. Ama bir yola çıktım bunu başarmak için uğraş veriyorum. Verdiğim rahatsızlık içinde ayrıca çok özür dilerim.
    13 Mayıs 2017 Cumartesi 22:54
  • Bence buradaki problem, DevExpress kullanıyor olmanız. DevExpress'in kontrollerinin kullanımı oldukça karışık. Bunun için, ciddi anlamda çalışmalısınız. Ki size en çok yardımcı olacak kaynak, DevExpress'in dökümanları olacak. Zira bu konuda -özellikle Türkçe- makale ve kaynak bulmak oldukça güç.

    Şu an profesyonel olmasanız da, bu azimle devam ederseniz ileride neden olmasın?

    Benim size önerim, hem DataGridView için yazdığım kodları DevExpress'teki kontrolünüze uyarlamanız hemde dökümanlarını okuyarak çözüm üretmeye çalışmanız yönünde olur. 

    Çalışmalarınızda başarılar ve kolaylıklar dilerim.


    Code is Poetry

    13 Mayıs 2017 Cumartesi 23:02
    Moderatör
  • Çok teşekkür ederim ilgi ve alakanız için. Kolay gelsin.
    13 Mayıs 2017 Cumartesi 23:04
  • Arkadaşlar kusurabakmayın. Ancak ne kadar uğraşmış olsam da yukarıdaki söylemiş olduğum senaryoyu bir türlü yapamadım. Bu konuda yardımcı olursanız çok sevinirim. İyi çalışmalar.
    23 Mayıs 2017 Salı 15:57
  • İyi günler

    yukarda benzerleri var ama.

    Textbox1.Text = Grid.CurrentRow.Cells["KolonAdı"].Value;

    birde böyle denersen.

    İyi çalışmalar.

    24 Mayıs 2017 Çarşamba 21:59
  • İlhan Bey merhaba. Bu kodu neyin altına yazacağız acaba.
    25 Mayıs 2017 Perşembe 20:58
  • Devexpress'i kullanmadım. Ama normal gridView'da.

    RowEnter eventına

    textbox1.text=dataGridView1.Rows[e.RowIndex].Cells[0].ToString()

    textbox2.text=dataGridView1.Rows[e.RowIndex].Cells[1].ToString()

    gibi eşitlikler yazarak alabilirsiniz.


    pgnchess.com

    dergikapaklari.com

    25 Mayıs 2017 Perşembe 21:14
  • Aslında Halil Bey çok farklı kombinasyonları denedim. Ancak asıl sorun şurada. Şimdi HESAPADI farklı bir kolon, HESAPKODU farklı bir kolon veritabanının tablosu içerisinde.

    Bu tablo içerisindeki HESAPKODU ve HESAPADI kolonları içerisindeki verilerin aşağıdaki Devexpress in GridControl componenti altında 

    bu şekilde görüntülenmesini sağlamak istiyorum. Bunu bi nebze yapabildim. Ancak orada da bazı eksiklerim var. Yani bir tane ana grup oluşturuyorum. Bu ana grubun altında bir alt grup oluşturuyorum. İstenirse bu alt grubunda altında birden fazla alt gruplar oluşturabilmemiz lazım. Resimdeki şekilde görüldüğü gibi diktörtken içerisine aldığım bir alan vardır. Bu yapıya getirebilmeliyiz. 

          Bundan sonrada bu oluşturulmuş hesap kodlarının isimlerinde değişiklik veya bir yerde eşleştirme yapılmamış ise program içerisinde silme şansımız olsun istiyorum. Değerlerin üzerinde değişiklik yapılabilmesi içinde GridControl üzerindeki değerlerin üzerine tıklandığında txtHesapKodu ve txtHesapAdi adında bulunan textboxlara bu değerlerin aktarılabilmesi ve üzerinde değişiklik yapılarak yeniden kayıt edilmesi arzulanmaktadır. Umarım durumu kapsamlı olarak anlatabilme fırsatım olmuştur. 

          Şimdiden çok teşekkür ederim. Kolay gelsin.

    25 Mayıs 2017 Perşembe 21:30
  • dediğim gibi hiç devexpress kullanmadım. O yüzden bu tür subgrid/subitem/tree artık nasıl bir yapı kullanıyor ise bunu nasıl yaptığını bilmiyorum. Buna bakmak lazım. 

    farklı kolonlarda, farklı tablolarda, farklı db'de olması bir şey ifade etmiyor. Aynı satırda gösterebiliyorsanız dediğim yöntem ile gösteremiyorsanız bir method yazıp alabilirsiniz. verdiğiniz örenkte

    Örneğin

    10100 - portfoydeki çekler satırında başka bir kolon daha yazılabiliyor mu? örneğin bunun parent kolonu. Yazılabiliyorsa onu da yazdırın ama visible özelliğini false deyin. sonra dediğim rowenter eventı ile iki kolonu da alabilirsiniz cell[kolonindex] ile.

    yazdırılamıyor ise bu tür bir yapıda parent-child türü bir ilşki olmalı child'den parente erişip gene değeri alabilirsiniz.

    o da olmuyor ise alt satırlar uniq ise bir method ile db'de bu kaydı bulup diğer kolonu çekebilirsiniz tek bir satır ile.

    Kısacası bu görüntünün nasıl oluştuğu önemli. grid'in kaynağı önemli. veriyi çekmek buna göre şekillenir ve birden fazla yöntem ile yapılabilir.

    bir diğer konu ise bu tür bir ana bir alt kırılım listesi için neden gridview kullanıyorsunuz? Neden TreeView değil?



    pgnchess.com

    dergikapaklari.com

    25 Mayıs 2017 Perşembe 21:44
  • Aslında bu konuda tam bir profosyonelliğim yok. TreeView yapısını da inceledim biraz. Ancak onda bu şekilde dallandırma mantığı varmıdır onu bilemedim. Bilmiyorum sanırım yapamayacağım bu yapıyı. Aslında bunu tam olarak bilen bir arkadaş muhakkak vardır. Sanırım ben yapıyı tam olarak anlatamıyorum arkadaşlara. Yaklaşık bir aydır bu yapıyı çözmeye çalışıyorum. 
    25 Mayıs 2017 Perşembe 21:52
  • Aslında bu konuda tam bir profosyonelliğim yok. TreeView yapısını da inceledim biraz. Ancak onda bu şekilde dallandırma mantığı varmıdır onu bilemedim. Bilmiyorum sanırım yapamayacağım bu yapıyı. Aslında bunu tam olarak bilen bir arkadaş muhakkak vardır. Sanırım ben yapıyı tam olarak anlatamıyorum arkadaşlara. Yaklaşık bir aydır bu yapıyı çözmeye çalışıyorum. 

    Bu şekilde dallandırma mantığı:))

    TreeView'ın kelime anlamı ağaç görünümü demektir zaten yani dallardan oluşur.

    Yalnız tek sorun var. Sizin kodlama mantığınız. Yani siz 101, 10101, 1010104 gibi bir kırılım yapıyorsunuz bu biraz kod tarafında çalışma gerektirir. kod uzunluğu işin içine girebilir veya sabit uzunluk yapıp ana kodları 0 ile tamamlayabilirsiniz. 1010000 gibi. 

    Ya da bunun yerine ParentID gibi bir alan daha eklersiniz. 0 ise köktür değilse yazan kodun alt kırılımıdır. Bu şekilde tree'deki node yapısını da kolay kurabilirsiniz.


    pgnchess.com

    dergikapaklari.com

    25 Mayıs 2017 Perşembe 22:12
  • İşte dedim ya ben profosyenel değilim. Ama yapmak istediğim sistemde bu konuda uzman olmam gerektiğini göstermektedir. Bendeki de inat işte, bu yapıyı uygulayabilmek adına. Aslında pc üzerinde uygulamayı gösterebilmem imkanım olsaydı eksikleri daha net görebilirim. 
    25 Mayıs 2017 Perşembe 22:22
  • Arkadaşlar bu yapı hakkında gerçekten bana yardımcı olabilecek bir arkadaş yokmudur. Ne yaptı ise çözüm bulamadım bu duruma. Lütfen yardımlarınızı esirgemeyin. Allah razı olsun.
    27 Mayıs 2017 Cumartesi 23:36