我正在使用 AJAX 控件工具包中的 AJAX 手风琴来显示从数据库中提取的项目的动态列表。我从后面的代码生成整个手风琴。这在本地测试时没有问题,但是当我在线发布时,手风琴显示第一个项目但单击时不执行任何其他操作,基本上没有响应任何内容。手风琴内容中还有指向其他页面的链接,这些确实有效。
对于aspx,我使用的是一个masterpage,里面有一个toolkitscriptmanager:
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server EnablePartialRendering="true">
</asp:ToolkitScriptManager>
在内容中,我还添加了一个 scriptmanagerproxy,希望能解决问题,但没有。
空手风琴是这样的:
<asp:accordion ID="Accordion1" runat="server"
HeaderCssClass="Header" ContentCssClass="Contents"
Font-Names="Verdana" Font-Size="10"
BorderColor="#000000" BorderStyle="Solid" BorderWidth="1"
FramesPerSecond="100" FadeTransitions="true"
TransitionDuration="500">
</asp:accordion>
这是我当前生成手风琴的代码:
public void getRequests()
{
DataTable requests = getRequests();
if (requests.Rows.Count == 0)
{
return;
}
for (int i = 0; i < requests.Rows.Count; i++)
{
DataTable makers = getInformationByRequest();
AjaxControlToolkit.AccordionPane pane1 = new AjaxControlToolkit.AccordionPane();
pane1.ID = "pane" + i;
Table table = new Table();
table.Width = Unit.Percentage(100);
TableRow row = new TableRow();
row.CssClass = "Header";
for (int j = 0; j < 4; j++)
{
Create panel head with information
}
table.Rows.Add(row);
pane1.HeaderContainer.Controls.Add(table);
Table table1 = new Table();
table1.Width = Unit.Percentage(100);
TableRow rowhead = new TableRow();
rowhead.CssClass = "Contents";
TableCell cellName = new TableCell();
cellName.Text = "Bedrijf naam";
TableCell cellStatus = new TableCell();
cellStatus.Text = "Request status";
TableCell cellAction = new TableCell();
cellAction.Text = "Actie";
rowhead.Cells.Add(cellName);
rowhead.Cells.Add(cellStatus);
rowhead.Cells.Add(cellAction);
table1.Rows.Add(rowhead);
for (int j = 0; j < makers.Rows.Count; j++)
{
TableRow row1 = new TableRow();
if (makers.Rows.Count != 0)
{
//method to create table1
}
pane1.ContentContainer.Controls.Add(table1);
}
Accordion1.Panes.Add(pane1);
}
正如我所说,这在调试时没有任何问题。
任何帮助是极大的赞赏。
编辑:
我用这个解决了它:
http://geekswithblogs.net/lorint/archive/2007/03/28/110161.aspx
感谢 henk mollema 让我走上了正轨。