Ho bisogno di voi esperti!!

Ho questa situazione:

4 xml file:

- messaggio0.xml

<messaggio>
<titolo>titlemessaggio0</titolo>
<corpo>bodymessaggio0</corpo>
</messaggio>

- messaggio1.xml

<messaggio>
<titolo>titlemessaggio1</titolo>
<corpo>bodymessaggio1</corpo>
</messaggio>

- risposte0.xml

<risposte>
<risposta>
<corpo>body1risposte0</corpo>
</risposta>
<risposta>
<corpo>body2risposte0</corpo>
</risposta>
</risposte>

- risposte1.xml

<risposte>
<risposta>
<corpo>body1risposte1</corpo>
</risposta>
<risposta>
<corpo>body2risposte1</corpo>
</risposta>
</risposte>

un test.aspx file:

<%@ Page Language="C#" CodeFile="test.aspx.cs" Inherits="prova" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<body>
<form id="Form1" runat="server">
<asp:ScriptManager runat="server" ID="sm"></asp:ScriptManager>
<asp:Panel ID="pan" runat="server"></asp:Panel>
</form>
</body>


un test.aspx.cs file:

using System;
using System.Data;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using AjaxControlToolkit;

public partial class test: System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Literal div1 = new Literal();
div1.Text = "<div style=\"margin-bottom: 5px;\">" +

"<div style=\"padding: 4px; text-align:center;\"><div>";
pan.Controls.Add(div1);



for (int j = 0; j < 2; j++)
{
AjaxControlToolkit.Accordion acc = new AjaxControlToolkit.Accordion();
acc.ID = j.ToString() + "-acc";
acc.FramesPerSecond = 40;
acc.FadeTransitions = true;
acc.TransitionDuration = 250;
acc.Visible = true;
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("~") + "/messaggio" + j.ToString() + ".xml");
LinkButton lb = new LinkButton();
lb.Text = "<div style=\"width:100%;\">" +

"<span style=\"font-size:14px;\">" +
"<font size=\"2\" color=\"#0033FF\">" + ds.Tables[0].Rows[0].ItemArray[0].ToString() + "</font>" +
"</span>" +

"</div>";
UpdatePanel up = new UpdatePanel();
up.ID = j.ToString() + "-updatepanel";
Literal lbl = new Literal();
lbl.Visible = false;
lbl.ID = j.ToString() + "-label";
lb.ID = j.ToString() + "-link";
lb.CommandArgument = j.ToString();
lb.Click += new EventHandler(lb_Click);
UpdateProgress upr = new UpdateProgress();
upr.ProgressTemplate = new BarGif("blablablablablabla");
upr.ID = j.ToString() + "-updateprogress";
upr.AssociatedUpdatePanelID = j.ToString() + "-updatepanel";
up.ContentTemplateContainer.Controls.Add(upr);
up.ContentTemplateContainer.Controls.Add(lb);
up.ContentTemplateContainer.Controls.Add(lbl);
up.ContentTemplateContainer.Controls.Add(acc);
AsyncPostBackTrigger apbt = new AsyncPostBackTrigger();
apbt.ControlID = j.ToString() + "-link";
apbt.EventName = "Click";
up.Triggers.Add(apbt);
pan.Controls.Add(up);

}
Literal div5 = new Literal();
div5.Text = "</div></div>";
pan.Controls.Add(div5);

}

public class BarGif : TemplateControl, ITemplate
{
private string _barPic;

public BarGif(string template)
{
this._barPic = template;
}

public void InstantiateIn(Control container)
{
LiteralControl lc = new LiteralControl("Please wait...");
container.Controls.Add(lc);
}
}

//Class for Building Pane HTML Template tempales
public class PaneHTMLTemplate : ITemplate
{
private string template;

public PaneHTMLTemplate(string temp)
{
template = temp;
}

public void InstantiateIn(Control container)
{
LiteralControl ltr = new LiteralControl(this.template);
container.Controls.Add(ltr);
}
}


void lb_Click(object sender, EventArgs e)
{
string argument = ((System.Web.UI.WebControls.LinkButton)(sender)).C ommandArgument;
Literal lbl = (Literal)pan.FindControl(argument + "-label");
if (lbl != null)
{
if (lbl.Visible == false)
{
lbl.Visible = true;

DataSet msg = new DataSet();
msg.ReadXml(Server.MapPath("~") + "/messaggio" + argument +".xml");

DataSet reply = new DataSet();
reply.ReadXml(Server.MapPath("~") + "/risposte" + argument + ".xml");

lbl.Text = "<div style=\"width:100%;\">" +

"

" + msg.Tables[0].Rows[0].ItemArray[1].ToString() + "</p>";
Accordion acc = (Accordion)pan.FindControl(argument + "-acc");

for (int i = 0; i < reply.Tables[0].Rows.Count; i++)
{
AjaxControlToolkit.AccordionPane pane = new AjaxControlToolkit.AccordionPane();
PaneHTMLTemplate header = new PaneHTMLTemplate("reply # " + (i + 1).ToString() + "");
pane.Header = header;
PaneHTMLTemplate body = new PaneHTMLTemplate(reply.Tables[0].Rows[i].ItemArray[0].ToString());
pane.Content = body;
acc.Panes.Add(pane);
}
lbl.Text += "</div>";

}
else { lbl.Visible = false; lbl.Text = ""; }
}
}
}



e ora il mio problema:

fate caricare la pagina test.aspx e verranno mostrati due titoli.
se si clicca sopra un titolo, verrà mostrato in maniera asincrona il corpo del messaggio e le repliche tramite un accordion dell'ajax toolkit.
Se si clicca sullo stesso titolo, viene chiuso il contenuto.
Ma...se si clicca sull'altro titolo, quando il primo è già aperto, saranno mostrate le risposte e il corpo del messaggio di questo secondo titolo, ma l'accordion del primo messaggio scomparirà (ovvero le risposte), mentre il corpo del messaggio rimane.
Il problema è proprio questo, io vorrei che appena carico il secondo messaggio, e quindi anche le risposte, le risposte del primo messaggio come il corpo rimangano sulla pagina e non scompaiano invece!!
Mi chiedo: come mai?

Spero possiate aiutarmi. Se avete qualche problema di comprensione, chiedete pure...risponderò celermente!
Grazie mille!