2010-12-16 108 views
1

上記のエラーを取得します。 アコーディアンのIDがバインドされるたびに一意になるようにします。私は動的に動作していない私のcode..Itsでアコーディオンペインを追加しました: - このようなエラーHelp ::同じID 'ctl00'を持つ複数のコントロールが見つかりました。 FindControlは、コントロールに一意のIDがあることを要求します

: -

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(); 
} 

私はアコーディオンのIDはユニークになりたいです。私は何をしたいのですか?

ASPXページ: - あなたは、同じIDを持つ複数のコントロールで終わるている理由です

<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 /> 

答えて

2

あなたは(私は推測している)ので、BindAccordionを複数回呼び出すべきではありません。

あなたはそれをPage_LoadRadTabStrip1_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); 
} 
+0

私はOnTabClick方法でBindAccordianを呼んではいけない場合、私は、タブをクリックすると、その後、何のアコーディオンがページにレンダリングされません。私は、urコードを試してみました。タブがクリックされるたびにaccordianの一意のIDを生成するにはどうすればよいですか? – Serenity

+0

@Serenity - これは、とにかくコードの匂いのように見えますが、それはあなたの特権です。とにかく、これは厄介ですが、これを行うことができます: 'accp.ID =" accp "+ Guid.NewGuid()。ToString();'。それで解決できない場合は、問題はどこか他の場所にあります。それが解決すれば、それは長い間、理想的な解決策ではありません。 – GenericTypeTea

関連する問題