none
butonlu satş RRS feed

  • Soru

  • Ana ekranda 20 tane buton var. Butonun birine sağ tıklayınca ürün ata yazısı çıkıyor . Ürün ata yazısına basınca bi tane form açılıcak ve bu formun içinde datagridview var bu datagridin içinde de ürünler( ürünbarkodu , ürün adı, fiyat) bu bilgiler bulunuyor. Ben hangi ürünü seçersem o butona o ürünü atıcak eğer butonda daha önceden atanmış ürün varsa silip yeni seçtiğinin atamasını yapıcak. Atama yaptıktan sonra açılan form kapanıcak ve o butonun üstünde atanan ürünün ismi yazıcak. O butona tıklayınca datagridview a ekleme yapıcak. Biraz uzun oldu ama gerçekten hiçbir şey yapamıyorum bu konuda yardım ederseniz sevinirim
    • Düzenleyen batuhan2335 25 Şubat 2020 Salı 10:22 Yanlış anlatım
    25 Şubat 2020 Salı 10:09

Yanıtlar

  • void Main()
    {
    	DataTable tbl = new DataTable();
    	new SqlDataAdapter("select * from products", @"server=.\SQLExpress;Database=Northwind;Trusted_Connection=yes").Fill(tbl);
    
    	Form f1 = new Form { Height = 250, Width = 600 };
    	for (int i = 0; i < 20; i++)
    	{
    		var button = new Button { Left = i / 5 * 150 + 10, Top = i % 5 * 40 + 10, Text = $"Urun{i}", Name = $"urun{i}" };
    		button.MouseDown += (sender, e) =>
    		{
    			if (e.Button == MouseButtons.Right)
    			{
    				var secim = new Secim(tbl);
    				secim.ShowDialog();
    				if (secim.DialogResult == DialogResult.OK)
    				{
    					var product = tbl.AsEnumerable().SingleOrDefault(x => x.Field<int>("ProductId") == secim.SecilenId);
    					if (product != null)
    					{
    						var urun = product.Field<string>("ProductName");
    						button.Text = urun;
    						button.Tag = secim.SecilenId.ToString();
    					}
    				}
    			}
    		};
    		f1.Controls.Add(button);
    	}
    	f1.Show();
    
    }
    
    public class Secim : Form
    {
    	private DataGridView dgv = new DataGridView
    	{
    		Dock = DockStyle.Fill,
    		ReadOnly = true,
    		SelectionMode = DataGridViewSelectionMode.FullRowSelect
    	};
    	public int SecilenId { get; set; }
    
    	public Secim(DataTable t)
    	{
    		this.Controls.Add(dgv);
    		dgv.DataSource = t;
    		dgv.CellContentDoubleClick += (sender, e) =>
    		{
    			SecilenId = (int)dgv.Rows[e.RowIndex].Cells["ProductId"].Value;
    			this.DialogResult = DialogResult.OK;
    			this.Close();
    		};
    	}
    }
    



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    • Yanıt Olarak İşaretleyen batuhan2335 26 Şubat 2020 Çarşamba 07:52
    25 Şubat 2020 Salı 14:03
    Yanıtlayıcı
  • Hepsi yazıyor zaten :( Sen C# temellerini pas geçip dogrudan bir uygulama yapmak istiyorsun. Once C# temellerini calissan daha hızlı ilerlersin.

    Ornek:

    button.MouseDown += (sender, e) =>
    		{
    			if (e.Button == MouseButtons.Right)
    			{
    				var secim = new Secim(tbl);
    				secim.ShowDialog();
    				if (secim.DialogResult == DialogResult.OK)
    				{
    					var product = tbl.AsEnumerable().SingleOrDefault(x => x.Field<int>("ProductId") == secim.SecilenId);
    					if (product != null)
    					{
    						var urun = product.Field<string>("ProductName");
    						button.Text = urun;
    						button.Tag = secim.SecilenId.ToString();
    					}
    				}
    			}
    		};

    Yaziyorsa, bu senin butonlardan birisinin (hepsinin aslında onun icin yeni class yapmaya öğrenmelisin) MouseDown event koduna:

    			if (e.Button == MouseButtons.Right)
    			{
    				var secim = new Secim(tbl);
    				secim.ShowDialog();
    				if (secim.DialogResult == DialogResult.OK)
    				{
    					var product = tbl.AsEnumerable().SingleOrDefault(x => x.Field<int>("ProductId") == secim.SecilenId);
    					if (product != null)
    					{
    						var urun = product.Field<string>("ProductName");
    						button.Text = urun;
    						button.Tag = secim.SecilenId.ToString();
    					}
    				}
    			}
     

    yazmak demek. Tabii oradaki isimlerin değişmesi gerekebilir.



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    • Yanıt Olarak İşaretleyen batuhan2335 26 Şubat 2020 Çarşamba 07:52
    25 Şubat 2020 Salı 15:30
    Yanıtlayıcı

Tüm Yanıtlar

  • ben sadece ürüne tıklayıp butona atama işlemi için yardım istiyorum. sağ tıkla diyip ürün ata diyerek başka forma yönlendiriyorum. ürünleri görebiliyorum. sadece istediğim ürünü seçince o butona atansın ve butonun ismi o ürünün adı olsun. ve form kapansın .
    25 Şubat 2020 Salı 12:43
  • void Main()
    {
    	DataTable tbl = new DataTable();
    	new SqlDataAdapter("select * from products", @"server=.\SQLExpress;Database=Northwind;Trusted_Connection=yes").Fill(tbl);
    
    	Form f1 = new Form { Height = 250, Width = 600 };
    	for (int i = 0; i < 20; i++)
    	{
    		var button = new Button { Left = i / 5 * 150 + 10, Top = i % 5 * 40 + 10, Text = $"Urun{i}", Name = $"urun{i}" };
    		button.MouseDown += (sender, e) =>
    		{
    			if (e.Button == MouseButtons.Right)
    			{
    				var secim = new Secim(tbl);
    				secim.ShowDialog();
    				if (secim.DialogResult == DialogResult.OK)
    				{
    					var product = tbl.AsEnumerable().SingleOrDefault(x => x.Field<int>("ProductId") == secim.SecilenId);
    					if (product != null)
    					{
    						var urun = product.Field<string>("ProductName");
    						button.Text = urun;
    						button.Tag = secim.SecilenId.ToString();
    					}
    				}
    			}
    		};
    		f1.Controls.Add(button);
    	}
    	f1.Show();
    
    }
    
    public class Secim : Form
    {
    	private DataGridView dgv = new DataGridView
    	{
    		Dock = DockStyle.Fill,
    		ReadOnly = true,
    		SelectionMode = DataGridViewSelectionMode.FullRowSelect
    	};
    	public int SecilenId { get; set; }
    
    	public Secim(DataTable t)
    	{
    		this.Controls.Add(dgv);
    		dgv.DataSource = t;
    		dgv.CellContentDoubleClick += (sender, e) =>
    		{
    			SecilenId = (int)dgv.Rows[e.RowIndex].Cells["ProductId"].Value;
    			this.DialogResult = DialogResult.OK;
    			this.Close();
    		};
    	}
    }
    



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    • Yanıt Olarak İşaretleyen batuhan2335 26 Şubat 2020 Çarşamba 07:52
    25 Şubat 2020 Salı 14:03
    Yanıtlayıcı
  • Hocam kodların altına yada üstüne nereye kullanıcağımı yazarmısınız. Hangi kodu load yada butonun içine teşekürler
    25 Şubat 2020 Salı 15:14
  • Hepsi yazıyor zaten :( Sen C# temellerini pas geçip dogrudan bir uygulama yapmak istiyorsun. Once C# temellerini calissan daha hızlı ilerlersin.

    Ornek:

    button.MouseDown += (sender, e) =>
    		{
    			if (e.Button == MouseButtons.Right)
    			{
    				var secim = new Secim(tbl);
    				secim.ShowDialog();
    				if (secim.DialogResult == DialogResult.OK)
    				{
    					var product = tbl.AsEnumerable().SingleOrDefault(x => x.Field<int>("ProductId") == secim.SecilenId);
    					if (product != null)
    					{
    						var urun = product.Field<string>("ProductName");
    						button.Text = urun;
    						button.Tag = secim.SecilenId.ToString();
    					}
    				}
    			}
    		};

    Yaziyorsa, bu senin butonlardan birisinin (hepsinin aslında onun icin yeni class yapmaya öğrenmelisin) MouseDown event koduna:

    			if (e.Button == MouseButtons.Right)
    			{
    				var secim = new Secim(tbl);
    				secim.ShowDialog();
    				if (secim.DialogResult == DialogResult.OK)
    				{
    					var product = tbl.AsEnumerable().SingleOrDefault(x => x.Field<int>("ProductId") == secim.SecilenId);
    					if (product != null)
    					{
    						var urun = product.Field<string>("ProductName");
    						button.Text = urun;
    						button.Tag = secim.SecilenId.ToString();
    					}
    				}
    			}
     

    yazmak demek. Tabii oradaki isimlerin değişmesi gerekebilir.



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    • Yanıt Olarak İşaretleyen batuhan2335 26 Şubat 2020 Çarşamba 07:52
    25 Şubat 2020 Salı 15:30
    Yanıtlayıcı
  • Hocam ben şurayı çözemedim de ben zaten sağ tıklayıp yeni bir form açıyorum ve orda ürünleri listeliyorum. Szin kodları kullandığım zaman toplamda 2 tane form oluyo. Sadecene benim açtığım formda datagridden seçicem butona basıcam butona basınca form kapanıcak ve ürün ata dediğim butona bilgileri alıcak
    25 Şubat 2020 Salı 19:04
  • :) Anydesk'i acar misin.


    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    25 Şubat 2020 Salı 19:45
    Yanıtlayıcı