asp.net
  • ajax
  • vb.net
  • accordion
  • findcontrol
  • 2012-08-27 152 views 0 likes 
    0

    我有网页,而且每次手风琴分支内定义我有一个标签,从SQL数据库中获取其值找到一个AJAX手风琴控制

    <cc1:Accordion DataSourceID="sqlDSSomeGroup" ID="acrd" runat="server" 
        <ContentTemplate> 
        <asp:Label ID="lbl" runat="server" Text='<%#Eval("SomeGroupID") %>' /> 
        </ContentTemplate> 
    </cc1:Accordion> 
    

    标签都呈现AJAX手风琴控制中使用的FindControl标签正确的价值。我的问题是如何在使用FindControl的代码中获取标签的值。现在,以下内容正确地找到了手风琴。

    Dim acc As AjaxControlToolkit.Accordion = CType(placeHolder.FindControl("acrd"), AjaxControlToolkit.Accordion) 
    

    但是,当我试图让使用下列标签的价值,我只好像被选为第一手风琴,即使选择了不同的手风琴分支获得的价值。我知道我必须以某种方式在某处使用选定的索引,但我不知道在哪里以及如何。任何帮助将不胜感激?

    Dim IDinCodeBehind As Label 
    IDinCodeBehind = CType(acc.FindControl("lbl"), Label) 
    

    回答

    1

    我做了一个小演示,得到selectedPane。在此窗格访问控制集合,并找到根据标签

    public partial class demo : System.Web.UI.Page 
    { 
        protected void Page_Load(object sender, EventArgs e) 
        { 
         if (!Page.IsPostBack) 
         { 
          // init data, demo purposes 
          List<Person> liste = new List<Person>(); 
          liste.Add(new Person() { ID = 0, Name = "jon0" }); 
          liste.Add(new Person() { ID = 1, Name = "jon1" }); 
          liste.Add(new Person() { ID = 2, Name = "jon2" }); 
          liste.Add(new Person() { ID = 3, Name = "jon3" }); 
          liste.Add(new Person() { ID = 4, Name = "jon4" }); 
          Accordion1.DataSource = liste; 
          Accordion1.DataBind(); 
         } 
        } 
        protected void btnGetName_Click(object sender, EventArgs e) 
        { 
         // get current pane by using Accordion1.SelectedIndex 
         Label lblName = Accordion1.Panes[Accordion1.SelectedIndex].FindControl("lblName") as Label; 
         Debug.WriteLine("Label: " + lblName.Text); 
        } 
    } 
    public class Person 
    { 
        public string Name { get; set; } 
        public int ID { get; set; } 
    } 
    

    这里是我的的aspx代码

    <asp:Accordion ID="Accordion1" runat="server" SelectedIndex="0"> 
        <HeaderTemplate> 
         <asp:Label ID="lblID" runat="server" Text='<%#"Pane" + Eval("ID") %>' /> 
         <hr /> 
        </HeaderTemplate> 
        <ContentTemplate> 
        <asp:Label ID="lblName" runat="server" Text='<%#Eval("Name") %>' /> 
        <br /> 
        <br /> 
        </ContentTemplate> 
    </asp:Accordion> 
    <asp:Button ID="btnGetName" runat="server" Text="GetName" onclick="btnGetName_Click" /> 
    
    +1

    谢谢你这么多Pilgerstorfer弗朗茨!我正在寻找标签lblName = Accordion1.Panes [Accordion1.SelectedIndex] .FindControl(“lblName”)作为标签;但是你提供了所有其他的东西,我很欣赏。很好的答案! – Dogahe

    +0

    很高兴我能帮上忙 –

    相关问题