C# terminarz rezerwacji

0

Witam!
Pisze trywialny terminarz rezerwacji i potrzebuje pomocy fachowców, w postaci opinii a także nowych sugestii dotyczących kodu . Mam dwie metody, które generują dynamicznie buttony wraz z ich właściwościami. Mój pomysł polega na pobraniu właściwości text (konkretnej godziny, konkretnego buttona) i zapisaniu do bazy za pomocą event'a. Jak mógłbym go wywołac dla każdego buttona? I czy w ogóle jest to dobra koncepcja.
Wrzucam kod wraz ze zdjęciem. Pozdrawiam

public void InitBtn()
        {
           
            for (int i = 0; i <15; i++)
            {
                
                TableRow row = new TableRow();
                if (i == 0)
                {

                    for(int k = 1; k <6; k++)
                    {
                        TableCell cell = new TableCell();
                        switch(k)
                        {
                            case 1:
                                cell.Controls.Add(new LiteralControl(("Poniedziałek")));
                                cell.HorizontalAlign = HorizontalAlign.Center;
                                row.Cells.Add(cell);
                                break;
                            case 2:
                                cell.Controls.Add(new LiteralControl(("Wtorek")));
                                cell.HorizontalAlign = HorizontalAlign.Center;
                                row.Cells.Add(cell);
                                break;
                            case 3:
                                cell.Controls.Add(new LiteralControl(("Środa")));
                                cell.HorizontalAlign = HorizontalAlign.Center;
                                row.Cells.Add(cell);
                                break;
                            case 4:
                                cell.Controls.Add(new LiteralControl(("Czwartek")));
                                cell.HorizontalAlign = HorizontalAlign.Center;
                                row.Cells.Add(cell);
                                break;
                            case 5:
                                cell.Controls.Add(new LiteralControl(("Piątek")));
                                cell.HorizontalAlign = HorizontalAlign.Center;
                                row.Cells.Add(cell);
                                break;
                            case 6:
                                cell.Controls.Add(new LiteralControl(("Sobota")));
                                cell.HorizontalAlign = HorizontalAlign.Center;
                                row.Cells.Add(cell);
                                break;
                        }
                    }
                           
                }
                if (i == 1)
                {
                    for (int j = 0; j < 5; j++)
                    {
                        TableCell cell = new TableCell();
                        cell.Controls.Add(new LiteralControl(About.pierwszyDzienTyg.AddDays(j).ToString("dd/MM/yyyy ")));
                        cell.HorizontalAlign = HorizontalAlign.Center;
                        row.Cells.Add(cell);
                    }
                }
                if (i >= 2)
                {
                    for (int j = 0; j < 5; j++)
                    {

                        TableCell cell = new TableCell();
                        cell.Controls.Add(new Button { Text = TextBtn(i, j), ID = "button" + j + i, Width = 100, BackColor = Color.FromName("#6C0"), ForeColor = Color.White,  });
                        row.Cells.Add(cell);
                    }
                }
                Table1.Rows.Add(row);
            }
        }

        public string TextBtn(int b, int a)
        {

            if (("" + a + "" + b == "02") || ("" + a + "" + b == "12") || ("" + a + "" + b == "22") || ("" + a + "" + b == "32") || ("" + a + "" + b == "42"))
            {
                return "9:00 - 9:30";
            }
            if ("" + a + "" + b == "03" || "" + a + "" + b == "13" || "" + a + "" + b == "23" || "" + a + "" + b == "33" || "" + a + "" + b == "43")
            {
                return "9:30 - 10:00";
            }
            if ("" + a + "" + b == "04" || "" + a + "" + b == "14" || "" + a + "" + b == "24" || "" + a + "" + b == "34" || "" + a + "" + b == "44")
            {
                return "10:00 - 10:30";
            }
            if ("" + a + "" + b == "05" || "" + a + "" + b == "15" || "" + a + "" + b == "25" || "" + a + "" + b == "35" || "" + a + "" + b == "45")
            {
                return "10:30 - 11:00";
            }
            if ("" + a + "" + b == "06" || "" + a + "" + b == "16" || "" + a + "" + b == "26" || "" + a + "" + b == "36" || "" + a + "" + b == "46")
            {
                return "11:00 - 11:30";
            }
            if ("" + a + "" + b == "07" || "" + a + "" + b == "17" || "" + a + "" + b == "27" || "" + a + "" + b == "37" || "" + a + "" + b == "47")
            {
                return "11:30 - 12:00";
            }
            if ("" + a + "" + b == "08" || "" + a + "" + b == "18" || "" + a + "" + b == "28" || "" + a + "" + b == "38" || "" + a + "" + b == "48")
            {
                return "12:00 - 12:30";
            }
            if ("" + a + "" + b == "09" || "" + a + "" + b == "19" || "" + a + "" + b == "29" || "" + a + "" + b == "39" || "" + a + "" + b == "49")
            {
                return "12:30 - 13:00";
            }
            if ("" + a + "" + b == "010" || "" + a + "" + b == "110" || "" + a + "" + b == "210" || "" + a + "" + b == "310" || "" + a + "" + b == "410")
            {
                return "13:00 - 13:30";
            }
            if ("" + a + "" + b == "011" || "" + a + "" + b == "111" || "" + a + "" + b == "211" || "" + a + "" + b == "311" || "" + a + "" + b == "411")
            {
                return "13:30 - 14:00";
            }
            if ("" + a + "" + b == "012" || "" + a + "" + b == "112" || "" + a + "" + b == "212" || "" + a + "" + b == "312" || "" + a + "" + b == "412")
            {
                return "14:00 - 14:30";
       {{Image:     }}}
            if ("" + a + "" + b == "013" || "" + a + "" + b == "113" || "" + a + "" + b == "213" || "" + a + "" + b == "313" || "" + a + "" + b == "413")
            {
                return "14:30 - 15:00";
            }
            if ("" + a + "" + b == "014" || "" + a + "" + b == "114" || "" + a + "" + b == "214" || "" + a + "" + b == "314" || "" + a + "" + b == "414")
            {
                return "15:00 - 15:30";
            }
            if ("" + a + "" + b == "015" || "" + a + "" + b == "115" || "" + a + "" + b == "215" || "" + a + "" + b == "315" || "" + a + "" + b == "415")
            {
                return "15:30 - 16:00";
            }
            return "Błąd";
        }
    }

tet.png

1
  1. Cała tą funkcję public string TextBtn(int b, int a) można zastąpić spokojnie dwoma TimeSpan jak by ktoś się uparł to i pewnie jednym.
  2. Dodaj event do każdego buttona przy towrzeniu:
// ...

var button = new Button
{ /* ... */ };
button.Click += CośTamButtonOnClick;
cell.Controls.Add(button);

// Daleko daleko gdzieś tam...

protected void CośTamButtonOnClick(object sender, EventArgs e)
{
         var cośTam = (Button) sender;
         // Itd. Itp.
}
0
  1. Co do metody TextBtn, postaram się ją zredukować
  2. Super działa, dziękuje za pomoc,
    pozdrawiam :)
1
var button = new Button
{ /* ... */ };
button.Click += CośTamButtonOnClick;
cell.Controls.Add(button);
 
// Daleko daleko gdzieś tam...

Zamiast „daleko daleko” można też tak:

var button = new Button
{ /* ... */ };

button.Click += (Object sender, EventArgs e) =>
{
    var cośTam = (Button) sender;
    // Itd. Itp.
};

cell.Controls.Add(button);
0

Azarien dzięki za kolejny pomysł :) napotkałem kolejny problem mianowicie rozchodzi się o postback tych własnie dynamicznych buttonów, jest jakaś możliwość blokady postback na tych właśnie buttonach ? poza if(!PostBack) w page_load?
Pozdrawiam.

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