create dynamic accordion pane and bind with varbinary
data
Design page for VS2008
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager>
<asp:Accordion ID="Dynamic"
runat="server"
SelectedIndex="0"
HeaderCssClass="headerAccordion"
ContentCssClass="contentAccordion">
</asp:Accordion>
Design page for VS2010
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:Accordion ID="Dynamic"
runat="server"
SelectedIndex="0"
HeaderCssClass="headerAccordion"
ContentCssClass="contentAccordion">
</asp:Accordion>
Add below line for css within <title></title>
<link href="Styles/accordion.css" rel="stylesheet"
type="text/css"
/>
(you will get at attachment)
Code Behind
Retrieve value and put at datatable like
below
string sql1 = "select *
from Admin_Package_Details where Pak_Type='" + b + "'";
SqlConnection con = new
SqlConnection(GetConnectionString());
SqlCommand cmd = new
SqlCommand(sql, con);
SqlDataAdapter da = new
SqlDataAdapter(cmd);
DataTable dt = new
DataTable();
da.Fill(dt);
Now create dynamic accordion pane based on value
with pane title
int i = 0;
for(i=0;i<dt.rows.count;i++)
{
//create pane with unique id
AjaxControlToolkit.AccordionPane
pn;
pn = new AjaxControlToolkit.AccordionPane();
pn.ID = "Pane" + i;
//create title and bind
Label lbTitle;
lbTitle = new Label();
for (int
p = 0; p < dt.Rows.Count; p++)
{
lbTitle.Text = b.ToString() + " "
+ "(" + dt.Rows[p][2].ToString() +
"Days Package)";
}
//now add title at pane
pn.HeaderContainer.Controls.Add(lbTitle);
//add pane at accordion
Dynamic.Panes.Add(pn);
i++;
}
Now if you have to bind varbinary data at dynamic
accordion then do like below.
dt.Columns.Add("PackageDescriptionNew");
foreach (DataRow dr in dt.Rows)
{
if (dr != null)
{
byte[] byt = (byte[])dr[3];
string str;
System.Text.ASCIIEncoding enc = new
System.Text.ASCIIEncoding();
str = enc.GetString(byt);
dr[4] = str;
}
}
My varbinary content was at 4th
column so dr[3] and I create one extra (column(dt.Columns.Add("PackageDescriptionNew");)
which is dr[4].
Now create dynamic table where you can bind this
value, like below.
(Namespace using
System.Web.UI.HtmlControls;)
HtmlTable table1 = new
HtmlTable();
HtmlTableRow row;
HtmlTableCell cell;
cell = new HtmlTableCell();
row = new HtmlTableRow();
cell.InnerHtml = dt.Rows[0][4].ToString();
row.Cells.Add(cell);
table1.Rows.Add(row);
Now add this table at accordion pane like below.
pn.ContentContainer.Controls.Add(table1);
Now you can add print button like
below.
Button print;
print = new Button();
print.Text = "Print";
print.Attributes.Add("onclick",
"return printing()");
pn.ContentContainer.Controls.Add(print);
Java script you have to add
<script language=javascript>
function printing() {
window.print();
}
</script>
Now you can add link button with
querystring like below
string a =
lbTitle.Text;
string url = "querystring.aspx?";
url += "Item=" + a.ToString();
LinkButton lk;
lk=new
LinkButton();
lk.Text="Booking";
lk.PostBackUrl = url;
add link button at accordion
pane like below
pn.ContentContainer.Controls.Add(lk);