AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W
Hur gör man en data binding till en variabel i C#?
Det skulle nog underlätta ifall du delade relevanta delar av koden samt förklarar behovet av det du efterfrågar.
Det är fullt möjligt att det finns en bättre lösning på ditt problem som du inte har sett ännu, men för att hjälpa dig att hitta den behövs mer information.
Såhär ser koden ut, jag försöker alltså binda variabeln extra till kolumnen anmark i min databas. Jag får bara meddelandet "System.ArgumentException: 'Cannot bind to the property 'kommentar' on the target control.
Parameter name: PropertyName'"
Går det att binda en variabel till ett dataset eller måste man göra på ett helt annat sätt?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace test
{
public partial class Form1 : Form
{
extraInfo extra = new extraInfo();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'dataSet1.betalat' table. You can move, or remove it, as needed.
this.betalatTableAdapter.Fill(this.dataSet1.betalat);
this.betalatBindingSource.AddNew();
this.DataBindings.Add("kommentar", dataSet1.betalat, "anmark");
}
private void mataIn_Click(object sender, EventArgs e)
{
this.betalatBindingSource.EndEdit();
this.betalatTableAdapter.Update(this.dataSet1.betalat);
}
}
class extraInfo : INotifyPropertyChanged
{
private string kommentar;
public string Kommentar
{
get { return kommentar; }
set
{
kommentar = value;
NotifyPropertyChanged("kommentar");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String pName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(pName));
}
}
}
}
Såhär ser koden ut, jag försöker alltså binda variabeln extra till kolumnen anmark i min databas. Jag får bara meddelandet "System.ArgumentException: 'Cannot bind to the property 'kommentar' on the target control.
Parameter name: PropertyName'"
Går det att binda en variabel till ett dataset eller måste man göra på ett helt annat sätt?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace test
{
public partial class Form1 : Form
{
extraInfo extra = new extraInfo();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'dataSet1.betalat' table. You can move, or remove it, as needed.
this.betalatTableAdapter.Fill(this.dataSet1.betalat);
this.betalatBindingSource.AddNew();
this.DataBindings.Add("kommentar", dataSet1.betalat, "anmark");
}
private void mataIn_Click(object sender, EventArgs e)
{
this.betalatBindingSource.EndEdit();
this.betalatTableAdapter.Update(this.dataSet1.betalat);
}
}
class extraInfo : INotifyPropertyChanged
{
private string kommentar;
public string Kommentar
{
get { return kommentar; }
set
{
kommentar = value;
NotifyPropertyChanged("kommentar");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String pName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(pName));
}
}
}
}
Nu var det länge sedan jag jobbade i C# och jag har aldrig provat att göra just detta.
Men om jag läser dokumentationen så måste ju den property du försöker binda finnas på den control
du försöker lägga till bindningen på.
I ditt kodexempel ovan försöker du lägga till bindningen på Form
, men din property kommentar
existerar inte där, utan i klassen extraInfo
(klassnamn börjar med stor bokstav förresten).
Om du inte redan gjort det rekommenderar jag att du läser dokumentationen:
Control.DataBindings Property
Binding Class
AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W
Jag provade att flytta in propertyn inuti form och nu får jag inget felmeddelande men texten dyker ändå inte upp i databasen. Någon som har ett förslag på lösning?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace test
{
public partial class Form1 : Form, INotifyPropertyChanged
{
private string kommentar;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'dataSet1.betalat' table. You can move, or remove it, as needed.
this.betalatTableAdapter.Fill(this.dataSet1.betalat);
this.betalatBindingSource.AddNew();
this.DataBindings.Add("Kommentar", dataSet1.betalat, "anmark");
}
private void mataIn_Click(object sender, EventArgs e)
{
Kommentar = "bla bla bla bla";
this.betalatBindingSource.EndEdit();
this.betalatTableAdapter.Update(this.dataSet1.betalat);
textBox1.Clear();
this.betalatBindingSource.AddNew();
}
public string Kommentar
{
get { return kommentar; }
set
{
kommentar = value;
NotifyPropertyChanged("kommentar");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String pName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(pName));
}
}
}
}
- Idag Fler PS5 Pro-detaljer läckta – kan släppas innan jul 6
- Igår Elektronikbolag gör en fuling – marknadsför telefoner som snart slutar fungera 26
- Igår SFW! ASUS Zenfone 11 Ultra – nytt flaggskepp med AI och gimbal 23
- Igår AMD RDNA 4 kan få dubblerad ray tracing-prestanda 42
- Igår Sony siktar på jullansering för PS 5 Pro 35
- Köpråd nya brusreducerande hörlurar10
- Bottleneck och DLSS?10
- Vad har ni i lön?12893
- Kör en modern AI – i Excel14
- Köpråd uppskattas.8
- AMD RDNA 4 kan få dubblerad ray tracing-prestanda42
- Är det bara jag som känner av de tuffa tiderna?415
- Elektronikbolag gör en fuling – marknadsför telefoner som snart slutar fungera26
- Har ni fått skattepengarna?3845
- Vilken serie såg du senast?1728
- Säljes Serverram + 10gbit NICs
- Säljes 1060 6gb
- Skänkes Garderobsrensning, GTX 660, GTX 760, XFX PRO550W
- Säljes 13700K EK-Quantum Kinetic FLT plus Velocity2
- Säljes BenQ XL2411T 144hz 1080p (Defekt)
- Säljes Garderobsrensning
- Köpes Allt inom äldre tv-spel mm
- Köpes LGA 1151 Moderkort köpes snarast (Göteborg)
- Säljes Asus ROG Strix X570-i Ryzen 3900x 16GB Corsair 3200 RAM
- Köpes Synology DS920+ köpes
- Fler PS5 Pro-detaljer läckta – kan släppas innan jul6
- Snart kan du spela för ditt företag på Linkedin16
- Elektronikbolag gör en fuling – marknadsför telefoner som snart slutar fungera26
- SFW! ASUS Zenfone 11 Ultra – nytt flaggskepp med AI och gimbal23
- Ny fiberkabel ska stärka dataöverföringen till Europa45
- Snabbkoll: Använder du trådlöst headset?125
- AMD RDNA 4 kan få dubblerad ray tracing-prestanda42
- Kör en modern AI – i Excel14
- Sony siktar på jullansering för PS 5 Pro35
- Vattenkyld i9-14900KS når 6 GHz på alla P-kärnor17
Externa nyheter
Spelnyheter från FZ
- Det säregna metroidvania-spelet Animal Well har fått släppdatum idag
- Nästa vecka får Cities: Skylines 2 betastöd för moddar idag
- Dragon's Dogma 2-info har läckt – flera dagar innan spelet släpps igår
- Bungie-klassikern Marathon på väg till moderna datorer igår
- PS5 Pro-specifikationerna påstås ha läckt igår