Odwołanie w zdarzeniu do innego zdarzenia

Odwołanie w zdarzeniu do innego zdarzenia
RS
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam,

Rozwiązałem ten problem nieco okrężną drogą, ale ciekawość nie pozwala mi na tym poprzestać... ;)

Problem jest następujący:
Jak odwołać się do zdarzenia z poziomu innego zdarzenia - w moim przypadku:
Mam obsługę wyboru jednego z dwóch przycisków RadioButtonList, która zmienia widoczność kolumn w GridView:

Kopiuj
    protected void RadioPracownicy_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (RBLPracownicy.SelectedItem.Value == "0")
        {
            GVPracownicy.Columns[2].Visible = true;
            GVPracownicy.Columns[3].Visible = true;
            GVPracownicy.Columns[4].Visible = true;
            GVPracownicy.Columns[5].Visible = true;
            GVPracownicy.Columns[6].Visible = false;
            GVPracownicy.Columns[7].Visible = false;
            GVPracownicy.Columns[8].Visible = false;
            GVPracownicy.Columns[9].Visible = false;
            GVPracownicy.Columns[10].Visible = false;
        }
        if (RBLPracownicy.SelectedItem.Value == "1")
        {
            GVPracownicy.Columns[2].Visible = false;
            GVPracownicy.Columns[3].Visible = false;
            GVPracownicy.Columns[4].Visible = false;
            GVPracownicy.Columns[5].Visible = false;
            GVPracownicy.Columns[6].Visible = true;
            GVPracownicy.Columns[7].Visible = true;
            GVPracownicy.Columns[8].Visible = true;
            GVPracownicy.Columns[9].Visible = true;
            GVPracownicy.Columns[10].Visible = true;
        }

Z poziomu obsługi zdarzenia Click przycisku, który ustawia widoczność odpowiedniego widoku w multiview, chciałbym dodatkowo ustawić aby gridview wyświetlał odpowiednie kolumny, tak jak przy wyborze

Kopiuj
 if (RBLPracownicy.SelectedItem.Value == "0") 

Obecnie obsługa przycisku wygląda tak:

Kopiuj
protected void btAktPrac_Click(object sender, EventArgs e)
    {
        MultiView1.ActiveViewIndex = 4;
        Powrot3.Focus();
    } 
Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
1

Jeżeli dobrze Cię zrozumiałem, to potrzebujesz podpiąć drugą funkcję obsługi pod zdarzenie.

Kopiuj
btAktPrac.Click += new EventHandler(RadioPracownicy_SelectedIndexChanged);
somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0
RadekS666 napisał(a):

Mam obsługę wyboru jednego z dwóch przycisków RadioButtonList, która zmienia widoczność kolumn w GridView:

Kopiuj
    protected void RadioPracownicy_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (RBLPracownicy.SelectedItem.Value == "0")
        {
            GVPracownicy.Columns[2].Visible = true;
            GVPracownicy.Columns[3].Visible = true;
            GVPracownicy.Columns[4].Visible = true;
            GVPracownicy.Columns[5].Visible = true;
            GVPracownicy.Columns[6].Visible = false;
            GVPracownicy.Columns[7].Visible = false;
            GVPracownicy.Columns[8].Visible = false;
            GVPracownicy.Columns[9].Visible = false;
            GVPracownicy.Columns[10].Visible = false;
        }
        if (RBLPracownicy.SelectedItem.Value == "1")
        {
            GVPracownicy.Columns[2].Visible = false;
            GVPracownicy.Columns[3].Visible = false;
            GVPracownicy.Columns[4].Visible = false;
            GVPracownicy.Columns[5].Visible = false;
            GVPracownicy.Columns[6].Visible = true;
            GVPracownicy.Columns[7].Visible = true;
            GVPracownicy.Columns[8].Visible = true;
            GVPracownicy.Columns[9].Visible = true;
            GVPracownicy.Columns[10].Visible = true;
        }

Masz może na myśli coś takiego?

Kopiuj
protected void RadioPracownicy_SelectedIndexChanged(object sender, EventArgs e)
{
    for (int i = 2; i <= 10; i++)
    {
         GVPracownicy.Columns[i] = RBLPracownicy.SelectedItem.Value == 0;
    }
}
RS
  • Rejestracja: dni
  • Ostatnio: dni
0
Sarrus napisał(a):

Jeżeli dobrze Cię zrozumiałem, to potrzebujesz podpiąć drugą funkcję obsługi pod zdarzenie.

Kopiuj
btAktPrac.Click += new EventHandler(RadioPracownicy_SelectedIndexChanged);

Właśnie o coś takiego mi chodziło. :) Tylko niestety nie taka forma nie działa:

Kopiuj
    protected void btAktPrac_Click(object sender, EventArgs e)
    {
        MultiView1.ActiveViewIndex = 4;
        btAktPrac.Click += new EventHandler(RadioPracownicy_SelectedIndexChanged);
        Powrot3.Focus();
    } 

Źle wykorzystałem Twoją podpowiedź, czy coś się nie zgadza? ;)

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

Tak, źle wykorzystałeś jego podpowiedź. Nie dodawaj nowej metody obsługującej zdarzenie Click w metodzie obsługującej zdarzenie Click! Zrób to w konstruktorze formy.

RS
  • Rejestracja: dni
  • Ostatnio: dni
0
somekind napisał(a):

Tak, źle wykorzystałeś jego podpowiedź. Nie dodawaj nowej metody obsługującej zdarzenie Click w metodzie obsługującej zdarzenie Click! Zrób to w konstruktorze formy.

Masz rację, tak działa. :) Tylko tak z ciekawości - czy da się odwołać do metody:

Kopiuj
protected void RadioPracownicy_SelectedIndexChanged(object sender, EventArgs e)

z wnętrza metody: ;)

Kopiuj
protected void btAktPrac_Click(object sender, EventArgs e) 
Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
1
RadekS666 napisał(a):

Tylko tak z ciekawości - czy da się odwołać do metody:

Kopiuj
protected void RadioPracownicy_SelectedIndexChanged(object sender, EventArgs e)

Jak bardzo chcesz to da się

Kopiuj
RadioPracownicy_SelectedIndexChanged(sender,e);
RS
  • Rejestracja: dni
  • Ostatnio: dni
0
Sarrus napisał(a):

Jak bardzo chcesz to da się

Kopiuj
RadioPracownicy_SelectedIndexChanged(sender,e);

Super, dzięki wielkie! :)
Pozdrawiam!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.