获取上述错误。 我希望Accordian的ID在每次绑定时都是唯一的。我在我的代码中动态添加了Accordian窗格..它不起作用: -
像这样: -for(int i=0;i< dt.Rows.Count;i++)
{
AccordionPane accp = new AccordionPane();
accp.ID = "accp" + i.ToString();
Accordion1.Panes.Add(accp);
Accordion1.DataSource = dt.DefaultView;
Accordion1.DataBind();
}
我希望Accordian的ID是唯一的。我怎样才能完成我想要的东西?
Aspx页面: -
<div id="div1" runat="server">
<telerik:RadTabStrip ID="RadTabStrip1" runat="server" MultiPageID="RadMultiPage1" OnTabClick="RadTabStrip1_OnTabClick" ClickSelectedTab="true">
</telerik:RadTabStrip>
<br /><br />
<telerik:RadMultiPage ID="RadMultiPage1" runat="server" SelectedIndex="0">
</telerik:RadMultiPage>
</div>
<cc1:Accordion ID="Accordion1" runat="server" FadeTransitions="true" Visible="true" AutoSize="None"
SelectedIndex="0" RequireOpenedPane="false" TransitionDuration="250" HeaderCssClass="accordionHeader" ContentCssClass="accordionContent" CssClass="toggler">
<HeaderTemplate>
<b style="color: Black">
<%#Eval("Ques")%>
</b>
</HeaderTemplate>
<ContentTemplate>
<p> <%#DataBinder.Eval(Container.DataItem, "QuesAns")%></p>
</ContentTemplate>
</cc1:Accordion>
<br />
答案 0 :(得分:2)
你不应该多次调用BindAccordion
因为(我猜)这就是为什么你最终会得到具有相同ID的多个控件。
您在Page_Load
和RadTabStrip1_OnTabClick
都在调用它。我对您的代码的最佳猜测是,您应该只在Page_Load
!IsPostBack
时调用一次。
如果不起作用,请尝试以下操作:
protected void BindTabStrip()
{
DataSet ds = GetDataSetForTabs();
RadTabStrip1.AppendDataBoundItems = true;
RadTabStrip1.DataSource = ds;
RadTabStrip1.DataTextField = "QuesType";
RadTabStrip1.DataValueField = "QuesTypeID";
RadTabStrip1.DataBind();
// Remove it accordian from the page before adding it to
// a new ControlCollection
Page.Controls.Remove(Accordian1);
RadPageView pv = new RadPageView();
pv.Controls.Add(Accordion1);
RadMultiPage1.PageViews.Add(pv);
}