手风琴SelectedIndexChanged时从动态创建的手风琴面板获取Pane.ID

时间:2019-01-29 19:13:24

标签: javascript asp.net ajaxcontroltoolkit

我已经参加了好几天没有成功。我有一个正在动态创建的手风琴面板。手风琴面板中的一项是窗格。窗格被赋予在手风琴中填充该窗格的数据库中记录的ID。例如,如果我要为50个州中的每个州创建一个手风琴,则paneID将代表州的准入顺序(例如,特拉华州,Pane.ID =“ Pane_1”,新泽西州,Pane.ID =“ Pane_3”,夏威夷, Pane.ID =“ Pane_50”等)

当用户选择手风琴时,我需要能够拉出窗格的ID。我在页面上添加了以下脚本,该脚本将手风琴的selectedIndexChange事件绑定到顶部:

        function pageLoad() {

        $find('<%= Accordion1.ClientID %>_AccordionExtender').add_selectedIndexChanged(
    accordion_selectedIndexChanged);
    };

    function accordion_selectedIndexChanged(sender, args) {
        var sinx = sender.get_SelectedIndex();
        alert(sinx);
    }

这是因为当我选择“手风琴”窗格时会触发。从那时起,我不知道如何在Accordion_selectedIndexChanged函数中获取Pane.ID。

1 个答案:

答案 0 :(得分:0)

首先,我要感谢@zgood。虽然我没有在方法中找到所需内容,但我找不到。我发现我看不到窗格ID,但可以看到标题ID。使用以下链接中的信息,我能够开发一种解决方案:
Pass Javascript Variables value to C#
Accordion Selected Index Change Content
How to Catch Accordion Pane Select Event

以下是一般步骤:

  • 创建了一个隐藏字段
  • 创建了一个隐藏按钮
  • 捕获了手风琴的变化
  • 将所选索引传递到隐藏字段中,然后将其称为隐藏按钮单击事件
  • 在后面的代码中查找headercontainer ID。

这是aspx代码:

function pageLoad() {
    $find('<%= Accordion1.ClientID %>_AccordionExtender').add_selectedIndexChanged(accordion_selectedIndexChanged);
};

function accordion_selectedIndexChanged(sender, args) {
    var control_clientId;
    var sinx = sender.get_SelectedIndex();
    if (sinx > -1) {
        var hdnfldVariable = document.getElementById('<%=hdnfldVariable.ClientID %>');
        hdnfldVariable.value = sinx;
        document.getElementById('LogEntry').click();                
    }
}

<asp:HiddenField ID="hdnfldVariable" runat="server" />
<asp:Button ID="LogEntry" runat="server" ClientIDMode="Static" OnClick="LogEntry_Click" />

这是背后的代码:

 protected void LogEntry_Click(object sender, EventArgs e)
{
   if (hdnfldVariable.Value != "")
   {
      int i = int.Parse(hdnfldVariable.Value);
      string id = Accordion1.Panes[i].HeaderContainer.ID;
      //Do Something here
   }
}