IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Lukáš Křehula:17.11.2014 13:53

Čau,
potřeboval bych poradit s editováním binding listu.
Mám třídu "Spravce", ve kterém mám BindingList "casti" (třída)

public BindingList<Casti> casti;

Binduju to s comboBoxem a ve třídě "casti" nehledejte nic složitého, zatím tam mám jen název
Zatím vše funguje, dokud nezačnu editovat (tj. změnit název té části)
Vytvořil jsem si nový win form "EditovatCast", ten momentálně vypadá takto:

public partial class EditovatCast : Form
{
    private Spravce spravce;
    private Casti cast;

    public EditovatCast(Spravce spravce, Casti cast)
    {
        InitializeComponent();
        this.spravce = spravce;
        this.cast = cast;
        tool_textBoxNovyNazev.Text = cast.ToString();
    }

    private void tool_buttonEditovatCast_Click(object sender, EventArgs e)
    {
        if(tool_textBoxNovyNazev.Text != null)
        {
            spravce.editovatCast(cast, tool_textBoxNovyNazev.Text);
            this.Close();
        }
    }
}

Základní win form:

private void tool_buttonEditovatLokaci_Click(object sender, EventArgs e)
{
    if (tool_comboBoxSeznamLokaci.SelectedIndex != -1)
    {
        EditovatCast editovatCast = new EditovatCast(spravce, (Casti)tool_comboBoxSeznamLokaci.SelectedItem);
        editovatCast.ShowDialog();
    }
}

A samotné editování (ve třídě "spravce"):

public void editovatCast(Casti cast, string novyNazev)
{
    casti[casti.IndexOf(cast)].nazev = novyNazev;
}

Něco mám špatně, protože se to neupraví, nejspíš ten index v listu (casti.IndexOf(cas­t))

Už nevím co s tím, doufám že mi pomůžete :[

Díky za případnou pomoc.

 
Odpovědět
17.11.2014 13:53
Avatar
Odpovídá na Lukáš Křehula
sadlomaslox25:17.11.2014 14:24

No chyba je presne jak rikas "ve třídě casti nehledejte nic složitého". Predpokladam ze trida casti zapomela implementovat INotifyProper­tyChanged.

PS: Kod "casti[casti.In­dexOf(cast)].na­zev = novyNazev;" je nesmysl. Staci jen "cast.nazev=no­vyNazev".

Editováno 17.11.2014 14:24
 
Nahoru Odpovědět
17.11.2014 14:24
Avatar
Odpovídá na sadlomaslox25
Lukáš Křehula:17.11.2014 14:52

Když ta třída vypadá takto, jak mám implementovat INotifyProper­tyChanged?

public class Casti
{
    public string nazev { get; set; }

    public Casti(string nazev)
    {
        this.nazev = nazev;
    }

    public override string ToString()
    {
        return this.nazev;
    }
}
 
Nahoru Odpovědět
17.11.2014 14:52
Avatar
Odpovídá na Lukáš Křehula
sadlomaslox25:17.11.2014 15:10
public class Casti:INotifyPropertyChanged
    {
        private string _nazev;

        public string nazev
        {
            get { return _nazev; }
            set
            {
                if (value == _nazev) return;
                _nazev = value;
                OnPropertyChanged("nazev");
            }
        }

        public Casti(string nazev)
        {
            this.nazev = nazev;
        }

        public override string ToString()
        {
            return this.nazev;
        }

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
17.11.2014 15:10
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.