Label i Table ASP.NET - dziwne zachowanie

Witam, mam prostą stronkę na której dynamicznie ładuję sobie 2x taką samą kontrolkę użytkownika. Oto kod: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace intranet { public partial class Calendar : System.Web.UI.Page { private int FCurrentMonth; private MyCalendarControl[] FMyCalendarControl; protected void Page_Load(object sender, EventArgs e) { this.FCurrentMonth = DateTime.Now.Month; this.generateCalendar(); } private void generateCalendar() { Control pCalendarControl; MyCalendarControl pMyCalendarControl; this.FMyCalendarControl = new MyCalendarControl[2]; pCalendarControl = LoadControl("MyCalendarControl.ascx"); pMyCalendarControl = (MyCalendarControl)pCalendarControl; pMyCalendarControl.FCurrentMonth = this.FCurrentMonth; pMyCalendarControl.FDepartmentID = 1; this.MultiViewCalendarContainer.ActiveViewIndex = this.FCurrentMonth-1; this.FMyCalendarControl[0] = pMyCalendarControl; this.MultiViewCalendarContainer.Views[this.FCurrentMonth-1].Controls.Add(pMyCalendarControl); pCalendarControl = LoadControl("MyCalendarControl.ascx"); pMyCalendarControl = (MyCalendarControl)pCalendarControl; pMyCalendarControl.FCurrentMonth = this.FCurrentMonth; pMyCalendarControl.FDepartmentID = 2; this.MultiViewCalendarContainer.ActiveViewIndex = this.FCurrentMonth-1; this.FMyCalendarControl[1] = pMyCalendarControl; this.MultiViewCalendarContainer.Views[this.FCurrentMonth-1].Controls.Add(pMyCalendarControl); } } } Kontrolka użytkownika jest zbudowana w ten sposób: <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MyCalendarControl.ascx.cs" Inherits="intranet.MyCalendarControl" %>
Show
Jedna kontrolka to jest warstwa, która ma się raz pokazywać a raz znikać po wciśnięciu przycisku `Hide`. Ponieważ na stronie wywołana jest 2x będą 2 warstwy z dwoma przyciskami Hide i dwiema zawartościami. Przycisk Hide uruchamia metodę ShowHideLayerButton_Click, która zdefiniowana jest w kontrolce. Kontrolka ponadto zawiera Label1 na której coś jest wyświetlone oraz definicję tabeli. Po wciśnięciu przycisku hide np w pierwszej warstwie Label1 w pierwszej warstwie (pierwszym wywołaniu kontrolki) chowa się, a w warstwie drugiej zostaje na wierzchu... co jest logiczne i jest OK. Inaczej natomiast zachowuje się TableDepartment. Chowają się tabele w obydwu warstwach. O co wogóle chodzi? Czemu tak się dzieje? Kod kontrolki poniżej: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace intranet { public partial class MyCalendarControl : System.Web.UI.UserControl { public int FCurrentMonth; public int FDepartmentID; public int FCurrentYear = 2008; protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) this.generateCalendar(); } protected void ShowHideLayerButton_Click(object sender, EventArgs e) { this.generateCalendar(); if (this.TableDepartment.Visible == true) { //this.myCalendarContent.Visible = false; this.TableDepartment.Visible = false; this.Label1.Visible = false; } else { this.TableDepartment.Visible = true; this.Label1.Visible = true; } } public void generateCalendar() { this.generateTableTitle(); this.Label1.Text = FCurrentMonth.ToString(); MyCalendarDataSetTableAdapters.logsTableAdapter pLogsAdapter = new MyCalendarDataSetTableAdapters.logsTableAdapter(); MyCalendarDataSet.logsDataTable pLogs = pLogsAdapter.addLog(this.FDepartmentID.ToString(), "bb"); } private void generateTableTitle() { TableRow pTableRow = new TableRow(); TableCell pTableCell = new TableCell(); pTableCell.Text = "Name"; pTableCell.BorderWidth = 1; pTableRow.Cells.Add(pTableCell); DateTime pToday = new DateTime(this.FCurrentYear, this.FCurrentMonth, 1); for (int i = 1; i <= 31; i++) { if (int.Parse(pToday.Month.ToString()) == this.FCurrentMonth) { pTableCell = new TableCell(); pTableCell.BorderWidth = 1; pTableCell.Height = 20; pTableCell.Width = 20; pTableCell.Text = i.ToString(); pTableRow.Cells.Add(pTableCell); pToday = pToday.AddDays(1); } else { break; } } this.TableDepartment.Rows.Add(pTableRow); } } } Dzięki z góry Rafał Co zauważyłem... w tej chwili wiersze i komórki w tabeli generowane są dynamicznie. Jeżeli zakoduję komórki w pliku Calendar.aspx na stałe wszystko działa OK. Problem w tym, że ja potrzebuję wszystko mieć utworzone dynamicznie :( Jak mam to zrobić?

Odpowiedzi: 0

rsobczuk
Dodano:
20.10.2008 20:29:04
Komentarzy:
0
Strona 0 / 0