Odwołanie w zdarzeniu do innego zdarzenia

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:

    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

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

Obecnie obsługa przycisku wygląda tak:

protected void btAktPrac_Click(object sender, EventArgs e)
    {
        MultiView1.ActiveViewIndex = 4;
        Powrot3.Focus();
    } 
1

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

btAktPrac.Click += new EventHandler(RadioPracownicy_SelectedIndexChanged);
0
RadekS666 napisał(a):

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

    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?

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

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

btAktPrac.Click += new EventHandler(RadioPracownicy_SelectedIndexChanged);

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

    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? ;)

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.

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:

protected void RadioPracownicy_SelectedIndexChanged(object sender, EventArgs e)

z wnętrza metody: ;)

protected void btAktPrac_Click(object sender, EventArgs e) 
1
RadekS666 napisał(a):

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

protected void RadioPracownicy_SelectedIndexChanged(object sender, EventArgs e)

Jak bardzo chcesz to da się

RadioPracownicy_SelectedIndexChanged(sender,e);
0
Sarrus napisał(a):

Jak bardzo chcesz to da się

RadioPracownicy_SelectedIndexChanged(sender,e);

Super, dzięki wielkie! :)
Pozdrawiam!

1 użytkowników online, w tym zalogowanych: 0, gości: 1