Toon posts:

[ASP.Net] Microsoft WebControls TabStrip

Pagina: 1
Acties:

Verwijderd

Topicstarter
Goedemiddag,

We gebruiken hier voor een aantal pagina's op onze ASP.Net 1.1 website de tabstrip van de Microsoft Internet Explorer WebControls (http://msdn.microsoft.com...ols/overview/tabstrip.asp).

Deze is in een usercontrol gebakken en wordt op een aantal pagina's aangeroepen. De pagina's hebben een verschillende hoeveelheid tabs. Bij het aanroepen van de control op de pagina wordt een "type" attribuut meegegeven waarmee vervolgens bepaald wordt in een "case" statement welke tabs de pagina moet hebben / de control moet weergeven.

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<script language="C#" runat="server">
  /// Private vars
  private static int _amountOfTabs;
  private static int[] _activePanels;    

  /// Page_Load
  private void Page_Load(object sender, System.EventArgs e)

  // Get the type
  String type = this.Attributes["type"];    

  if (!Page.IsPostBack)
  {
    // Determine which type it is
    switch (type.ToString())
    {   
      case Type1:
        // Add tabs
        tabStrip.Items.Clear();          
        tabStrip.Items.Add(1);
        tabStrip.Items.Add(2);
        tabStrip.Items.Add(5);
        _amountOfTabs = 3;
        _activePanels = new int[3] { 2, 3, 6 };
        break;

      case Type2:
        // Add tabs
        tabStrip.Items.Clear();          
        tabStrip.Items.Add(3);
        tabStrip.Items.Add(4);
        tabStrip.Items.Add(5);
        _amountOfTabs = 3;
        _activePanels = new int[3] { 4, 5, 6 };
        break;

     default:
          lblError.Visible = true;
          lblError.Text = "Onbekend type: " + type.ToString();
          break;
      }

    //Activate the selected panel
    panelChange();
    }

  private void panelChange()
  {    
    // Loop through all tabs
    for (int i = 0; i < _amountOfTabs; i++)
    {      
      // Cast panel
      Panel activePanel = (Panel)FindControl("pnl" + _activePanels[i].ToString());
      
      // If this is the selected panel      
      if (tabStrip.SelectedIndex == i)
      { 
        //Make the panel visible
        activePanel.Visible = true;
      }
      else
      {        
        activePanel.Visible = false;
      }
    }


Op de ontwikkel omgeving draait dit vlekkeloos.

Maar nu zijn we over naar productie en steken de problemen de kop op: Het "tabbed-browsing" vertoont onvoorspelbaar gedrag. Het kan zo maar zijn dat je op tab 3 klikt, maar op tab 5 terecht komt.

Kan dit te maken hebben met gedeelde waarden van een variabele? Dat zou dan moeten liggen aan
C#:
1
private static int[] _activePanels;  

denk ik. Protected maken verhelpt het probleem niet. Iemand enige idee?

Verwijderd

Topicstarter
Niemand enig idee? :'(

[ Voor 5% gewijzigd door Verwijderd op 21-07-2006 15:38 ]