I have created dynamic linkbuttons in custom webpart. All the buttons are getting displayed as expected. Problem here is that i'm trying to execute same event based on the commandname property of the button.
When i click on the button it all the linkbutton objects gets initialized once again and all the properties are getting reset.
Below is the code i have written so far:
public class DynamicQuarter : System.Web.UI.WebControls.WebParts.WebPart
{
string siteUrl = string.Empty;
string rootUrl = string.Empty;
string siteName = string.Empty;
private bool _error = false;
Label lblyr1 = new Label();
Label lblyr2 = new Label();
Label lblyr3 = new Label();
Label lblyr4 = new Label();
DataTable dt = new DataTable();
LinkButton lnkDynamic;
protected override void CreateChildControls()
{
dt = getdt();
bool hascurrentyr = false;
for (int i = 0; i < dt.Rows.Count-1; i++)
{
if (dt.Rows[i]["year"].Equals(System.DateTime.Now.Year.ToString()))
{
hascurrentyr = true;
break;
}
}
if (hascurrentyr == false)
{
lblyr1.Text = DateTime.Now.Date.AddYears(-3).Year.ToString();
Controls.Add(lblyr1);
}
string beforeSubmitJS = "/nvar exportRequested = false; /n";
beforeSubmitJS += "var beforeFormSubmitFunction = theForm.onsubmit;/n";
beforeSubmitJS += "theForm.onsubmit = function(){ /n";
beforeSubmitJS += "var returnVal = beforeFormSubmitFunction(); /n";
beforeSubmitJS += "if(exportRequested && returnVal) {_spFormOnSubmitCalled=false; exportRequested=false;} /n";
beforeSubmitJS += "return returnVal; /n";
beforeSubmitJS += "}; /n";
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alterFormSubmitEvent", beforeSubmitJS, true);
lblyr2.Text = DateTime.Now.Date.AddYears(-2).Year.ToString();
Controls.Add(lblyr2);
lblyr3.Text = DateTime.Now.Date.AddYears(-1).Year.ToString();
Controls.Add(lblyr3);
if (hascurrentyr == true)
{
lblyr4.Text = DateTime.Now.Date.Year.ToString();
Controls.Add(lblyr4);
}
}
protected void lnkDynamic_Command(object sender, EventArgs e)
{
}
public DataTable getdt()
{
//
//Code to find GUID of the list Item
SPSite site = SPContext.Current.Site;
SPWeb web = site.OpenWeb();
SPList objlist = web.Lists["DownloadContents"];
string guid = string.Empty;
foreach (SPListItem item in objlist.Items)
{
if (item.Title == "Index of Customers for 3 years")
{
guid = item.UniqueId.ToString();
}
}
//
//creating datatable to enter 3 yeards data with 4 quarters and querystring
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add("year", typeof(string));
dt.Columns.Add("quarter", typeof(string));
dt.Columns.Add("querystring", typeof(string));
//code to find current years current quarter
string quarter = string.Empty;
if (System.DateTime.Now.Month.Equals(1)||System.DateTime.Now.Month.Equals(2)||System.DateTime.Now.Month.Equals(3))
{
quarter = "Q1";
}
else if (System.DateTime.Now.Month.Equals(4) || System.DateTime.Now.Month.Equals(5) || System.DateTime.Now.Month.Equals(6))
{
quarter = "Q2";
}
else if (System.DateTime.Now.Month.Equals(7)||System.DateTime.Now.Month.Equals(8)||System.DateTime.Now.Month.Equals(9))
{
quarter = "Q3";
}
else if (System.DateTime.Now.Month.Equals(10) || System.DateTime.Now.Month.Equals(11) || System.DateTime.Now.Month.Equals(12))
{
quarter = "Q4";
}
//code to enter current years data based on current quarter
if (quarter.Contains("Q1"))
{
//if current quarter is Q1 means 12 quarters are already appearing on webpart
}
else if (quarter.Contains("Q2"))
{
//if current quarter is Q2 that means need to enter 1st quarter of the current year and remove Q1 of the (year-3)
dr = dt.NewRow();
dr["year"] = System.DateTime.Now.Year.ToString();
dr["quarter"] = "Q1";
dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + System.DateTime.Now.Year.ToString() + "Q1";
dt.Rows.Add(dr);
}
else if (quarter.Contains("Q3"))
{
//if current quarter is Q3 that means need to enter 1st & 2nd quarter of the current year and remove Q1,Q2 of the (year-3)
dr = dt.NewRow();
dr["year"] = System.DateTime.Now.Year.ToString();
dr["quarter"] = "Q1";
dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + System.DateTime.Now.Year.ToString() + "Q1";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["year"] = System.DateTime.Now.Year.ToString();
dr["quarter"] = "Q2";
dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + System.DateTime.Now.Year.ToString() + "Q2";
dt.Rows.Add(dr);
}
else if (quarter.Contains("Q4"))
{
//if current quarter is Q4 that means need to enter 1st,2nd & 3rd quarter of the current year and remove Q1,Q2 & Q3 of the (year-3)
dr = dt.NewRow();
dr["year"] = System.DateTime.Now.Year.ToString();
dr["quarter"] = "Q1";
dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + System.DateTime.Now.Year.ToString() + "Q1";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["year"] = System.DateTime.Now.Year.ToString();
dr["quarter"] = "Q2";
dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + System.DateTime.Now.Year.ToString() + "Q2";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["year"] = System.DateTime.Now.Year.ToString();
dr["quarter"] = "Q3";
dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + System.DateTime.Now.Year.ToString() + "Q3";
dt.Rows.Add(dr);
}
//
//Code to enter previous years(current year - 1 ) data in datatable
for (int j = 1; j <= 4; j++)
{
dr = dt.NewRow();
dr["year"] = Convert.ToString(System.DateTime.Now.Year - 1);
dr["quarter"] = "Q" + j.ToString();
dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + Convert.ToString(System.DateTime.Now.Year - 1) + "Q" + j.ToString();
dt.Rows.Add(dr);
}
//
//
//code to check how many quarter(s) of the current year are entered in Datatable
string sNoOfQuartersinCurrentYear = string.Empty;
for (int i = 0; i < dt.Rows.Count - 1; i++)
{
if (dt.Rows[i]["year"].Equals(System.DateTime.Now.Year.ToString()))
{
sNoOfQuartersinCurrentYear += "," + dt.Rows[i]["quarter"].ToString();
}
}
//
//
//Code to enter previous 2 years(current year - 2 ) data in datatable
if (sNoOfQuartersinCurrentYear.Contains("Q4"))
{
return dt;
}
else if (sNoOfQuartersinCurrentYear.Contains("Q3"))
{
dr = dt.NewRow();
dr["year"] = Convert.ToString(System.DateTime.Now.Year - 2);
dr["quarter"] = "Q4";
dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + Convert.ToString(System.DateTime.Now.Year - 2) + "Q4";
dt.Rows.Add(dr);
return dt;
}
else if (sNoOfQuartersinCurrentYear.Contains("Q2"))
{
dr = dt.NewRow();
dr["year"] = Convert.ToString(System.DateTime.Now.Year - 2);
dr["quarter"] = "Q3";
dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + Convert.ToString(System.DateTime.Now.Year - 2) + "Q3";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["year"] = Convert.ToString(System.DateTime.Now.Year - 2);
dr["quarter"] = "Q4";
dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + Convert.ToString(System.DateTime.Now.Year - 2) + "Q4";
dt.Rows.Add(dr);
return dt;
}
else if (sNoOfQuartersinCurrentYear.Contains("Q1"))
{
dr = dt.NewRow();
dr["year"] = Convert.ToString(System.DateTime.Now.Year - 2);
dr["quarter"] = "Q2";
dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + Convert.ToString(System.DateTime.Now.Year - 2) + "Q2";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["year"] = Convert.ToString(System.DateTime.Now.Year - 2);
dr["quarter"] = "Q3";
dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + Convert.ToString(System.DateTime.Now.Year - 2) + "Q3";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["year"] = Convert.ToString(System.DateTime.Now.Year - 2);
dr["quarter"] = "Q4";
dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + Convert.ToString(System.DateTime.Now.Year - 2) + "Q4";
dt.Rows.Add(dr);
return dt;
}
else if (string.IsNullOrEmpty(sNoOfQuartersinCurrentYear))
{
for (int j = 1; j <= 4; j++)
{
dr = dt.NewRow();
dr["year"] = Convert.ToString(System.DateTime.Now.Year - 2);
dr["quarter"] = "Q" + j.ToString();
dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + Convert.ToString(System.DateTime.Now.Year - 2) + "Q" + j.ToString();
dt.Rows.Add(dr);
}
for (int j = 1; j <= 4; j++)
{
dr = dt.NewRow();
dr["year"] = Convert.ToString(System.DateTime.Now.Year - 3);
dr["quarter"] = "Q" + j.ToString();
dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + Convert.ToString(System.DateTime.Now.Year - 3) + "Q" + j.ToString();
dt.Rows.Add(dr);
}
return dt;
}
return dt;
}
public override void RenderControl(HtmlTextWriter writer)
{
lblyr1.RenderControl(writer);
writer.WriteBreak();
string expression = "year='" + lblyr1.Text + "'";
int i = 1;
//
foreach (DataRow row in dt.Select(expression))
{
lnkDynamic.ID = "lnkDynamic_" + i;
lnkDynamic.Text = row["quarter"].ToString();
lnkDynamic.CommandName = row["year"].ToString();
lnkDynamic.EnableViewState = true;
lnkDynamic.RenderControl(writer);
writer.Write(" ");
i += 1;
}
i = 1;
writer.WriteBreak();
writer.WriteBreak();
lblyr2.RenderControl(writer);
writer.WriteBreak();
expression = "year='" + lblyr2.Text + "'";
foreach (DataRow row in dt.Select(expression))
{
lnkDynamic.ID = "lnkDynamic_" + i;
lnkDynamic.Text = row["quarter"].ToString();
lnkDynamic.CommandName = row["year"].ToString();
lnkDynamic.EnableViewState = true;
lnkDynamic.RenderControl(writer);
writer.Write(" ");
i += 1;
}
i = 1;
writer.WriteBreak();
writer.WriteBreak();
lblyr3.RenderControl(writer);
writer.WriteBreak();
expression = "year='" + lblyr3.Text + "'";
foreach (DataRow row in dt.Select(expression))
{
lnkDynamic.ID = "lnkDynamic_" + i;
lnkDynamic.Text = row["quarter"].ToString();
lnkDynamic.CommandName = row["year"].ToString();
lnkDynamic.EnableViewState = true;
lnkDynamic.RenderControl(writer);
writer.Write(" ");
i += 1;
}
i = 1;
writer.WriteBreak();
writer.WriteBreak();
lblyr4.RenderControl(writer);
writer.WriteBreak();
expression = "year='" + lblyr4.Text + "'";
foreach (DataRow row in dt.Select(expression))
{
lnkDynamic.ID = "lnkDynamic_" + i;
lnkDynamic.Text = row["quarter"].ToString();
lnkDynamic.CommandName = row["year"].ToString();
lnkDynamic.EnableViewState = true;
lnkDynamic.RenderControl(writer);
writer.Write(" ");
i += 1;
}
}
private void HandleException(Exception ex)
{
this._error = true;
this.Controls.Clear();
this.Controls.Add(new LiteralControl(ex.Message));
}
protected override void OnLoad(EventArgs e)
{
if (!_error)
{
try
{
base.OnLoad(e);
}
catch (Exception ex)
{
HandleException(ex);
}
}
}
protected override void LoadViewState(object savedState)
{
base.LoadViewState(savedState);
EnsureChildControls();
}
protected override object SaveViewState()
{
return new Pair(base.SaveViewState(), null);
}
protected override void OnInit(EventArgs e)
{
dt = getdt();
for (int i = dt.Rows.Count - 1; i >= 0; i--)
{
lnkDynamic = new LinkButton();
lnkDynamic.EnableViewState = true;
lnkDynamic.ID = "lnkDynamic_" + i;
lnkDynamic.Text = "Q" + i.ToString();
lnkDynamic.Click += new EventHandler(lnkDynamic_Command);
lnkDynamic.CommandName = dt.Rows[i]["year"].ToString();
lnkDynamic.Visible = true;
this.Controls.Add(lnkDynamic);
}
base.OnInit(e);
}
}
}
nileshvk
Member
37 Points
57 Posts
Event handler for dynamically created linkbuttons in custom webpart
Feb 24, 2012 02:10 PM|LINK
Hi All,
I have created dynamic linkbuttons in custom webpart. All the buttons are getting displayed as expected. Problem here is that i'm trying to execute same event based on the commandname property of the button.
When i click on the button it all the linkbutton objects gets initialized once again and all the properties are getting reset.
Below is the code i have written so far:
public class DynamicQuarter : System.Web.UI.WebControls.WebParts.WebPart { string siteUrl = string.Empty; string rootUrl = string.Empty; string siteName = string.Empty; private bool _error = false; Label lblyr1 = new Label(); Label lblyr2 = new Label(); Label lblyr3 = new Label(); Label lblyr4 = new Label(); DataTable dt = new DataTable(); LinkButton lnkDynamic; protected override void CreateChildControls() { dt = getdt(); bool hascurrentyr = false; for (int i = 0; i < dt.Rows.Count-1; i++) { if (dt.Rows[i]["year"].Equals(System.DateTime.Now.Year.ToString())) { hascurrentyr = true; break; } } if (hascurrentyr == false) { lblyr1.Text = DateTime.Now.Date.AddYears(-3).Year.ToString(); Controls.Add(lblyr1); } string beforeSubmitJS = "/nvar exportRequested = false; /n"; beforeSubmitJS += "var beforeFormSubmitFunction = theForm.onsubmit;/n"; beforeSubmitJS += "theForm.onsubmit = function(){ /n"; beforeSubmitJS += "var returnVal = beforeFormSubmitFunction(); /n"; beforeSubmitJS += "if(exportRequested && returnVal) {_spFormOnSubmitCalled=false; exportRequested=false;} /n"; beforeSubmitJS += "return returnVal; /n"; beforeSubmitJS += "}; /n"; this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alterFormSubmitEvent", beforeSubmitJS, true); lblyr2.Text = DateTime.Now.Date.AddYears(-2).Year.ToString(); Controls.Add(lblyr2); lblyr3.Text = DateTime.Now.Date.AddYears(-1).Year.ToString(); Controls.Add(lblyr3); if (hascurrentyr == true) { lblyr4.Text = DateTime.Now.Date.Year.ToString(); Controls.Add(lblyr4); } } protected void lnkDynamic_Command(object sender, EventArgs e) { } public DataTable getdt() { // //Code to find GUID of the list Item SPSite site = SPContext.Current.Site; SPWeb web = site.OpenWeb(); SPList objlist = web.Lists["DownloadContents"]; string guid = string.Empty; foreach (SPListItem item in objlist.Items) { if (item.Title == "Index of Customers for 3 years") { guid = item.UniqueId.ToString(); } } // //creating datatable to enter 3 yeards data with 4 quarters and querystring DataTable dt = new DataTable(); DataRow dr; dt.Columns.Add("year", typeof(string)); dt.Columns.Add("quarter", typeof(string)); dt.Columns.Add("querystring", typeof(string)); //code to find current years current quarter string quarter = string.Empty; if (System.DateTime.Now.Month.Equals(1)||System.DateTime.Now.Month.Equals(2)||System.DateTime.Now.Month.Equals(3)) { quarter = "Q1"; } else if (System.DateTime.Now.Month.Equals(4) || System.DateTime.Now.Month.Equals(5) || System.DateTime.Now.Month.Equals(6)) { quarter = "Q2"; } else if (System.DateTime.Now.Month.Equals(7)||System.DateTime.Now.Month.Equals(8)||System.DateTime.Now.Month.Equals(9)) { quarter = "Q3"; } else if (System.DateTime.Now.Month.Equals(10) || System.DateTime.Now.Month.Equals(11) || System.DateTime.Now.Month.Equals(12)) { quarter = "Q4"; } //code to enter current years data based on current quarter if (quarter.Contains("Q1")) { //if current quarter is Q1 means 12 quarters are already appearing on webpart } else if (quarter.Contains("Q2")) { //if current quarter is Q2 that means need to enter 1st quarter of the current year and remove Q1 of the (year-3) dr = dt.NewRow(); dr["year"] = System.DateTime.Now.Year.ToString(); dr["quarter"] = "Q1"; dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + System.DateTime.Now.Year.ToString() + "Q1"; dt.Rows.Add(dr); } else if (quarter.Contains("Q3")) { //if current quarter is Q3 that means need to enter 1st & 2nd quarter of the current year and remove Q1,Q2 of the (year-3) dr = dt.NewRow(); dr["year"] = System.DateTime.Now.Year.ToString(); dr["quarter"] = "Q1"; dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + System.DateTime.Now.Year.ToString() + "Q1"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["year"] = System.DateTime.Now.Year.ToString(); dr["quarter"] = "Q2"; dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + System.DateTime.Now.Year.ToString() + "Q2"; dt.Rows.Add(dr); } else if (quarter.Contains("Q4")) { //if current quarter is Q4 that means need to enter 1st,2nd & 3rd quarter of the current year and remove Q1,Q2 & Q3 of the (year-3) dr = dt.NewRow(); dr["year"] = System.DateTime.Now.Year.ToString(); dr["quarter"] = "Q1"; dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + System.DateTime.Now.Year.ToString() + "Q1"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["year"] = System.DateTime.Now.Year.ToString(); dr["quarter"] = "Q2"; dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + System.DateTime.Now.Year.ToString() + "Q2"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["year"] = System.DateTime.Now.Year.ToString(); dr["quarter"] = "Q3"; dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + System.DateTime.Now.Year.ToString() + "Q3"; dt.Rows.Add(dr); } // //Code to enter previous years(current year - 1 ) data in datatable for (int j = 1; j <= 4; j++) { dr = dt.NewRow(); dr["year"] = Convert.ToString(System.DateTime.Now.Year - 1); dr["quarter"] = "Q" + j.ToString(); dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + Convert.ToString(System.DateTime.Now.Year - 1) + "Q" + j.ToString(); dt.Rows.Add(dr); } // // //code to check how many quarter(s) of the current year are entered in Datatable string sNoOfQuartersinCurrentYear = string.Empty; for (int i = 0; i < dt.Rows.Count - 1; i++) { if (dt.Rows[i]["year"].Equals(System.DateTime.Now.Year.ToString())) { sNoOfQuartersinCurrentYear += "," + dt.Rows[i]["quarter"].ToString(); } } // // //Code to enter previous 2 years(current year - 2 ) data in datatable if (sNoOfQuartersinCurrentYear.Contains("Q4")) { return dt; } else if (sNoOfQuartersinCurrentYear.Contains("Q3")) { dr = dt.NewRow(); dr["year"] = Convert.ToString(System.DateTime.Now.Year - 2); dr["quarter"] = "Q4"; dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + Convert.ToString(System.DateTime.Now.Year - 2) + "Q4"; dt.Rows.Add(dr); return dt; } else if (sNoOfQuartersinCurrentYear.Contains("Q2")) { dr = dt.NewRow(); dr["year"] = Convert.ToString(System.DateTime.Now.Year - 2); dr["quarter"] = "Q3"; dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + Convert.ToString(System.DateTime.Now.Year - 2) + "Q3"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["year"] = Convert.ToString(System.DateTime.Now.Year - 2); dr["quarter"] = "Q4"; dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + Convert.ToString(System.DateTime.Now.Year - 2) + "Q4"; dt.Rows.Add(dr); return dt; } else if (sNoOfQuartersinCurrentYear.Contains("Q1")) { dr = dt.NewRow(); dr["year"] = Convert.ToString(System.DateTime.Now.Year - 2); dr["quarter"] = "Q2"; dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + Convert.ToString(System.DateTime.Now.Year - 2) + "Q2"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["year"] = Convert.ToString(System.DateTime.Now.Year - 2); dr["quarter"] = "Q3"; dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + Convert.ToString(System.DateTime.Now.Year - 2) + "Q3"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["year"] = Convert.ToString(System.DateTime.Now.Year - 2); dr["quarter"] = "Q4"; dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + Convert.ToString(System.DateTime.Now.Year - 2) + "Q4"; dt.Rows.Add(dr); return dt; } else if (string.IsNullOrEmpty(sNoOfQuartersinCurrentYear)) { for (int j = 1; j <= 4; j++) { dr = dt.NewRow(); dr["year"] = Convert.ToString(System.DateTime.Now.Year - 2); dr["quarter"] = "Q" + j.ToString(); dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + Convert.ToString(System.DateTime.Now.Year - 2) + "Q" + j.ToString(); dt.Rows.Add(dr); } for (int j = 1; j <= 4; j++) { dr = dt.NewRow(); dr["year"] = Convert.ToString(System.DateTime.Now.Year - 3); dr["quarter"] = "Q" + j.ToString(); dr["querystring"] = SPContext.Current.Site.Url + "/" + web.Name + "/download.aspx?id=" + guid + "&listname=DownloadContents&siteurl=/" + web.Name + "&Quarter=" + Convert.ToString(System.DateTime.Now.Year - 3) + "Q" + j.ToString(); dt.Rows.Add(dr); } return dt; } return dt; } public override void RenderControl(HtmlTextWriter writer) { lblyr1.RenderControl(writer); writer.WriteBreak(); string expression = "year='" + lblyr1.Text + "'"; int i = 1; // foreach (DataRow row in dt.Select(expression)) { lnkDynamic.ID = "lnkDynamic_" + i; lnkDynamic.Text = row["quarter"].ToString(); lnkDynamic.CommandName = row["year"].ToString(); lnkDynamic.EnableViewState = true; lnkDynamic.RenderControl(writer); writer.Write(" "); i += 1; } i = 1; writer.WriteBreak(); writer.WriteBreak(); lblyr2.RenderControl(writer); writer.WriteBreak(); expression = "year='" + lblyr2.Text + "'"; foreach (DataRow row in dt.Select(expression)) { lnkDynamic.ID = "lnkDynamic_" + i; lnkDynamic.Text = row["quarter"].ToString(); lnkDynamic.CommandName = row["year"].ToString(); lnkDynamic.EnableViewState = true; lnkDynamic.RenderControl(writer); writer.Write(" "); i += 1; } i = 1; writer.WriteBreak(); writer.WriteBreak(); lblyr3.RenderControl(writer); writer.WriteBreak(); expression = "year='" + lblyr3.Text + "'"; foreach (DataRow row in dt.Select(expression)) { lnkDynamic.ID = "lnkDynamic_" + i; lnkDynamic.Text = row["quarter"].ToString(); lnkDynamic.CommandName = row["year"].ToString(); lnkDynamic.EnableViewState = true; lnkDynamic.RenderControl(writer); writer.Write(" "); i += 1; } i = 1; writer.WriteBreak(); writer.WriteBreak(); lblyr4.RenderControl(writer); writer.WriteBreak(); expression = "year='" + lblyr4.Text + "'"; foreach (DataRow row in dt.Select(expression)) { lnkDynamic.ID = "lnkDynamic_" + i; lnkDynamic.Text = row["quarter"].ToString(); lnkDynamic.CommandName = row["year"].ToString(); lnkDynamic.EnableViewState = true; lnkDynamic.RenderControl(writer); writer.Write(" "); i += 1; } } private void HandleException(Exception ex) { this._error = true; this.Controls.Clear(); this.Controls.Add(new LiteralControl(ex.Message)); } protected override void OnLoad(EventArgs e) { if (!_error) { try { base.OnLoad(e); } catch (Exception ex) { HandleException(ex); } } } protected override void LoadViewState(object savedState) { base.LoadViewState(savedState); EnsureChildControls(); } protected override object SaveViewState() { return new Pair(base.SaveViewState(), null); } protected override void OnInit(EventArgs e) { dt = getdt(); for (int i = dt.Rows.Count - 1; i >= 0; i--) { lnkDynamic = new LinkButton(); lnkDynamic.EnableViewState = true; lnkDynamic.ID = "lnkDynamic_" + i; lnkDynamic.Text = "Q" + i.ToString(); lnkDynamic.Click += new EventHandler(lnkDynamic_Command); lnkDynamic.CommandName = dt.Rows[i]["year"].ToString(); lnkDynamic.Visible = true; this.Controls.Add(lnkDynamic); } base.OnInit(e); } } }