Hello. I have an ajax accordian. In which I have HeaderTemplate and ContentTemplate. Both are binding data from database. In my ContentTemplate I have checkbox. Now I want to get text of checked checkbox items according to HeaderTemplate Index. Below is my code.
<asp:Accordion ID="Accordion1" runat="server" TransitionDuration="100" SelectedIndex=-1 FramesPerSecond="200" FadeTransitions="true"
RequireOpenedPane="false" OnItemDataBound="Accordion1_ItemDataBound" ContentCssClass="accordion-content" HeaderCssClass="accordion-header"
HeaderSelectedCssClass="accordion-selected" onitemcommand="Accordian1_ItemCommand" >
<HeaderTemplate>
<%----%>
<%#DataBinder.Eval(Container.DataItem, " Class_Name") %>
</HeaderTemplate>
<ContentTemplate>
<asp:HiddenField ID="txt_categoryID" runat="server" Value='<%#DataBinder.Eval(Container.DataItem," Class_ID") %>' />
<asp:GridView ID="GridView1" runat="server" RowStyle-BackColor="#ededed" RowStyle-HorizontalAlign="Left"
AutoGenerateColumns="false" GridLines="Horizontal" Width="900px" >
<Columns>
<asp:TemplateField HeaderStyle-HorizontalAlign="Left" HeaderText="Courses" HeaderStyle-BackColor="#d1d1d1"
HeaderStyle-ForeColor="#777777">
<ItemTemplate>
<asp:CheckBox ID="cbCourse" runat="server" AutoPostBack="true" onClick="changeCheckboxText();" Text='<%#DataBinder.Eval(Container.DataItem," Course_Name") %> ' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:Accordion>
<asp:Button ID="btnNext" runat="server" Text="Next" onclick="btnNext_Click" class="next action-button" />
below is codebehind:
protected void Page_Load(object sender, EventArgs e)
{
//if (Session["stid"] != null && Session["stnm"] != null)
{
if (!Page.IsPostBack)
{
getData();
}
}
//else
//{
//Response.Redirect("Default.aspx");
//}
}
public void getData()
{
string class_name="SELECT Class_ID,Class_Name from Classes";
SqlDataAdapter sqlAdapter = act.SelectRecDa(class_name);
DataSet myDataset = new DataSet();
sqlAdapter.Fill(myDataset);
Accordion1.DataSource = myDataset.Tables[0].DefaultView;
Accordion1.DataBind();
}
//protected void btnGiveEmail_Click(object sender, EventArgs e)
//{
// int admNo = Accordion1.SelectedIndex + 1;
// AccordionPane pane = Accordion1.Panes[Accordion1.SelectedIndex];
// Label lbl = pane.FindControl("lblEmail") as Label;
// //lbl.Text = "Email: " + dt.Rows[0]["Email"].ToString();
//}
protected void Accordion1_ItemDataBound(object sender, AjaxControlToolkit.AccordionItemEventArgs e)
{
if (e.ItemType == AjaxControlToolkit.AccordionItemType.Content)
{
string sqlSelect = "SELECT Course_Name from Courses where Class_ID = '" + ((HiddenField)e.AccordionItem.FindControl("txt_categoryID")).Value + "' ";
SqlDataAdapter sqlAdapter = act.SelectRecDa(sqlSelect);
DataSet myDataset = new DataSet();
sqlAdapter.Fill(myDataset);
var d = Accordion1.SelectedIndex;
GridView grd = new GridView();
grd = (GridView)e.AccordionItem.FindControl("GridView1");
grd.DataSource = myDataset;
grd.DataBind();
}
}
This is javascript fnction to get selected pane index.
<script type="text/javascript" language="javascript">
function pageLoad() {
var behaviorId = $get("<%= Accordion1.ClientID%>").AccordionBehavior._id;
$find(behaviorId).add_selectedIndexChanged(
accordion_selectedIndexChanged);
}
function accordion_selectedIndexChanged(sender, args) {
var oldIndex = args.get_oldIndex();
var newIndex = args.get_selectedIndex();
function changeCheckboxText(cbCourse) {
if (cbCourse.checked) {
alert("a");
}
}
}
</script>
Now, when user click on a pane, it will open some checkboxes with text on right side. what i want is when user selects the checkbox and click on Next button, I want text of checked checkboxes and its parent headetTemplate id and text.