Hi,
In my project, I have a number of known columns, which are in the .aspx page:
In my project, I have a number of known columns, which are in the .aspx page:
<
telerik:RadGrid
ID
=
"RadGrid1"
GridLines
=
"None"
runat
=
"server"
AllowAutomaticDeletes
=
"True"
AllowAutomaticInserts
=
"True"
PageSize
=
"5"
AllowAutomaticUpdates
=
"True"
AllowPaging
=
"True"
AutoGenerateColumns
=
"False"
OnNeedDataSource
=
"RadGrid1_OnNeedRoleDataSource"
OnItemUpdated
=
"RadGrid1_ItemUpdated"
OnItemDeleted
=
"RadGrid1_ItemDeleted"
OnItemInserted
=
"RadGrid1_ItemInserted"
OnDataBound
=
"RadGrid1_DataBound"
OnItemDataBound
=
"RadGrid1_OnRoleItemDataBound"
>
<
PagerStyle
Mode
=
"NextPrevAndNumeric"
/>
<
MasterTableView
Width
=
"100%"
CommandItemDisplay
=
"TopAndBottom"
DataKeyNames
=
"RoleID"
EditMode
=
"InPlace"
HorizontalAlign
=
"NotSet"
AutoGenerateColumns
=
"False"
>
<
Columns
>
<
telerik:GridEditCommandColumn
ButtonType
=
"ImageButton"
UniqueName
=
"EditCommandColumn"
>
<
ItemStyle
CssClass
=
"MyImageButton"
/>
</
telerik:GridEditCommandColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"RoleTitle"
SortExpression
=
"Role"
UniqueName
=
"Role"
EditFormColumnIndex
=
"1"
>
<
ItemTemplate
>
<
asp:Label
ID
=
"lblRoleTitle"
runat
=
"server"
Text='<%# Eval("RoleTitle") %>'></
asp:Label
>
</
ItemTemplate
>
<
EditItemTemplate
>
<
asp:DropDownList
ID
=
"cbRoleTitle"
runat
=
"server"
/>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Type"
SortExpression
=
"EmpType"
UniqueName
=
"EmpType"
EditFormColumnIndex
=
"2"
>
<
ItemTemplate
>
<
asp:Label
runat
=
"server"
ID
=
"lblEmployeeType"
Text
=
'Staff'
></
asp:Label
>
</
ItemTemplate
>
<
EditItemTemplate
>
<
asp:DropDownList
ID
=
"cbEmploymentType"
runat
=
"server"
/>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Notes"
SortExpression
=
"Notes"
UniqueName
=
"Notes"
EditFormColumnIndex
=
"3"
>
<
ItemTemplate
>
<
asp:Label
runat
=
"server"
ID
=
"lblNotes"
Text
=
'Notes'
></
asp:Label
>
</
ItemTemplate
>
<
EditItemTemplate
>
<
span
>
<
asp:TextBox
ID
=
"tbNotes"
runat
=
"server"
Rows
=
"5"
Wrap
=
"true"
/>
</
span
>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Discipline"
SortExpression
=
"Discipline"
UniqueName
=
"Discipline"
EditFormColumnIndex
=
"4"
>
<
ItemTemplate
>
<
asp:Label
runat
=
"server"
ID
=
"lblDiscipline"
Text
=
'Senior'
></
asp:Label
>
</
ItemTemplate
>
<
EditItemTemplate
>
<
span
>
<
asp:DropDownList
ID
=
"cbDiscipline"
runat
=
"server"
/>
</
span
>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
</
Columns
>
</
MasterTableView
>
<
ClientSettings
>
<
ClientEvents
OnRowDblClick
=
"RowDblClick"
/>
</
ClientSettings
>
</
telerik:RadGrid
>
And also a set of dynamic columns, that the GridTemplate is used for, and is created in the page_init.
The problem is that I now get multiples of these dynamic columns whenever the page refreshes.
If I check for Page.IsPostBack, then the edit columns just don't work when I add a new row.
Any idea how I can stop seeing duplicate columns?
Thanks
protected
void
Page_Init(
object
sender, EventArgs e)
{
//And the weekly columns
if
(RadGrid1.Columns.Count < 6)
{
SPWeb web = SPContext.Current.Web;
//Need a value cell per week - this code builds up a set of columns from the FR.ValueColumn
if
(FR!=
null
)
{
List<ValueColumn> valueCols = GetValueColumnsByID(web, FR.ID);
if
(valueCols !=
null
&& valueCols.Count > 0)
{
foreach
(ValueColumn value
in
valueCols)
{
//The grid needs to be added BEFORE the values are assigned, otherwise headings are lost when in Edit mode
GridTemplateColumn tc1 =
new
GridTemplateColumn();
RadGrid1.MasterTableView.Columns.Add(tc1);
tc1.ItemTemplate =
new
DataGridTemplate(ListItemType.Item,
"VC:"
+ value.ID.ToString());
tc1.EditItemTemplate =
new
DataGridTemplate(ListItemType.EditItem,
"VC:"
+ value.ID.ToString());
tc1.HeaderText = value.Title;
tc1.UniqueName =
"ValueColumn-"
+ value.ID.ToString();
tc1.DataField =
"x"
;
}
}
}
}
}