Hi,
I am programmaticaly creating RadGrid columns. This works fine and the data is right, but when I change the page of the RadGrid my columns disappear. Please advise either what I am doing wrong, or what the problem is.
I am programmaticaly creating RadGrid columns. This works fine and the data is right, but when I change the page of the RadGrid my columns disappear. Please advise either what I am doing wrong, or what the problem is.
| public partial class ListAdvertisements : System.Web.UI.Page |
| { |
| static DataSet ds; |
| static DataSet ds2; |
| static DataSet ds3; |
| static string UserID; |
| protected void Page_Load(object sender, EventArgs e) |
| { |
| if (!IsPostBack) |
| { |
| UserID = Request.QueryString["userid"]; |
| SubSonic.SqlQuery sql = new SubSonic.Select("ProfileID", |
| "Title as Profile") |
| .From(Tables.Ma_Profiles) |
| .Where(Ma_Profiles.InactiveColumn) |
| .IsEqualTo(0); |
| ds = sql.ExecuteDataSet(); |
| GridBoundColumn bound; |
| bound = new GridBoundColumn(); |
| grdAdvertisements.MasterTableView.Columns.Add(bound); |
| bound.DataField = "ProfileID"; |
| bound.Visible = false; |
| bound = new GridBoundColumn(); |
| grdAdvertisements.MasterTableView.Columns.Add(bound); |
| bound.DataField = "Profile"; |
| bound.Visible = true; |
| bound.HeaderText = "Profile"; |
| SubSonic.SqlQuery sql2 = new SubSonic.Select("ID", |
| "Description") |
| .From(Tables.Vacancy_Advert_Types) |
| .Where(Vacancy_Advert_Types.InactiveDateColumn) |
| .IsNull() |
| .Or(Vacancy_Advert_Types.InactiveDateColumn) |
| .IsGreaterThan(DateTime.Now); |
| ds2 = sql2.ExecuteDataSet(); |
| foreach (DataRow dr in ds2.Tables[0].Rows) |
| { |
| DataColumn dc = new DataColumn(); |
| bound = new GridBoundColumn(); |
| grdAdvertisements.MasterTableView.Columns.Add(bound); |
| bound.DataField = dr[1].ToString() + "id"; |
| bound.Visible = false; |
| dc.ColumnName = dr[1].ToString() + "id"; |
| ds.Tables[0].Columns.Add(dc); |
| DataColumn dc2 = new DataColumn(); |
| dc2.ColumnName = dr[1].ToString(); |
| ds.Tables[0].Columns.Add(dc2); |
| string colname = "Advert"; |
| GridTemplateColumn templateColumn = new GridTemplateColumn(); |
| templateColumn.ItemTemplate = new MyTemplate(colname, UserID); |
| templateColumn.HeaderText = colname; |
| grdAdvertisements.MasterTableView.Columns.Add(templateColumn); |
| } |
| GridButtonColumn button = new GridButtonColumn(); |
| grdAdvertisements.MasterTableView.Columns.Add(button); |
| button.ButtonType = GridButtonColumnType.ImageButton; |
| button.CommandName = "Edit"; |
| button.Visible = true; |
| button.HeaderText = "View all"; |
| button.ImageUrl = "~/Images/Buttons/S03edit32.gif"; |
| } |
| } |
| protected void FillGrid() |
| { |
| SubSonic.SqlQuery sql = new SubSonic.Select("ProfileID", |
| "Title as Profile") |
| .From(Tables.Ma_Profiles) |
| .Where(Ma_Profiles.InactiveColumn) |
| .IsEqualTo(0); |
| ds = sql.ExecuteDataSet(); |
| SubSonic.SqlQuery sql2 = new SubSonic.Select("ID", |
| "Description") |
| .From(Tables.Vacancy_Advert_Types) |
| .Where(Vacancy_Advert_Types.InactiveDateColumn) |
| .IsNull() |
| .Or(Vacancy_Advert_Types.InactiveDateColumn) |
| .IsGreaterThan(DateTime.Now); |
| ds2 = sql2.ExecuteDataSet(); |
| foreach (DataRow dr in ds2.Tables[0].Rows) |
| { |
| DataColumn dc = new DataColumn(); |
| dc.ColumnName = dr[1].ToString() + "id"; |
| ds.Tables[0].Columns.Add(dc); |
| DataColumn dc2 = new DataColumn(); |
| dc2.ColumnName = dr[1].ToString(); |
| ds.Tables[0].Columns.Add(dc2); |
| } |
| foreach (DataRow dr in ds.Tables[0].Rows) |
| { |
| string sql3 = "select a.adverttype, c.description from vacancy_advert a " + |
| "inner join vacancy_advert_to_profiles b on a.id = b.advertid " + |
| "inner join vacancy_advert_types c on a.adverttype = c.id " + |
| "where b.profileid = @profileid"; |
| QueryCommand qc = new QueryCommand(sql3, "SSBASE"); |
| qc.AddParameter("profileid", Convert.ToInt32(dr[0]), DbType.Int32, ParameterDirection.Input); |
| DataSet ds4 = DataService.GetDataSet(qc); |
| if (ds4.Tables[0].Rows.Count > 0) |
| { |
| int j = 0; |
| for (int i = 0; i < ds4.Tables[0].Rows.Count * 2; i = i + 2) |
| { |
| dr[2 + i] = ds4.Tables[0].Rows[j][0].ToString(); |
| dr[3 + i] = ds4.Tables[0].Rows[j][1].ToString(); |
| j++; |
| } |
| } |
| } |
| grdAdvertisements.DataSource = ds.Tables[0]; |
| } |
| protected void grdAdvertisements_NeedDataSource(object source, GridNeedDataSourceEventArgs e) |
| { |
| FillGrid(); |
| } |
| protected void grdAdvertisements_PreRender(object sender, EventArgs e) |
| { |
| GridSortExpression sortExpr = new GridSortExpression(); |
| sortExpr.FieldName = "ProfileID"; |
| sortExpr.SortOrder = GridSortOrder.Ascending; |
| grdAdvertisements.MasterTableView.SortExpressions.AddSortExpression(sortExpr); |
| } |
| protected void btnNewAdvert_Click(object sender, ImageClickEventArgs e) |
| { |
| Response.Redirect("~/Recruitment/Advertisements/CreateAdvert.aspx?userid=" + UserID); |
| } |
| protected void grdAdvertisements_ItemCommand(object source, GridCommandEventArgs e) |
| { |
| if (e.CommandName == "Edit") |
| { |
| Response.Redirect("~/Recruitment/Advertisements/EditAdverts.aspx?userid=" + UserID + "&profileid=" + e.Item.Cells[2].Text); |
| } |
| } |
| protected void grdAdvertisements_ItemDataBound(object sender, GridItemEventArgs e) |
| { |
| if (e.Item.DataItem != null) |
| { |
| for (int i = 0; i < e.Item.Cells.Count; i++) |
| { |
| if (e.Item.Cells[i].Controls.Count == 1) |
| { |
| if (e.Item.Cells[i].Controls[0] is ImageButton) |
| { |
| if (((ImageButton)e.Item.Cells[i].Controls[0]).ID == "imgAdvert") |
| { |
| if (e.Item.Cells[i - 1].Text == " ") |
| { |
| ((ImageButton)e.Item.Cells[i].Controls[0]).ImageUrl = "~/Images/Buttons/S12edit32.gif"; |
| ((ImageButton)e.Item.Cells[i].Controls[0]).Enabled = false; |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| protected void grdAdvertisements_ItemCreated(object sender, GridItemEventArgs e) |
| { |
| } |
| } |
| public partial class MyTemplate : ITemplate |
| { |
| protected ImageButton img; |
| private string colname; |
| static string UserID2; |
| public MyTemplate(string cName, string UserID) |
| { |
| colname = cName; |
| UserID2 = UserID; |
| } |
| public void InstantiateIn(System.Web.UI.Control container) |
| { |
| img = new ImageButton(); |
| img.Click += new ImageClickEventHandler(img_Click); |
| img.ID = "imgAdvert"; |
| img.ImageUrl = "~/Images/Buttons/S06preview32.gif"; |
| img.Enabled = true; |
| container.Controls.Add(img); |
| } |
| void img_Click(object sender, ImageClickEventArgs e) |
| { |
| } |
| } |