I'd like to persist the column display settings for my grid to a database. I'm using the header context menu to allow the users to show/hide fields, but am having trouble figuring out how to capture which are visible. I've placed a button at the top of my page for them to click. When I inspect the columns after post-back, the column display settings are not present. Is there a way to do this?
Thanks!
Thanks!
4 Answers, 1 is accepted
0
Erik
Top achievements
Rank 1
answered on 12 Jun 2014, 05:06 AM
Forgot to mention that the display settings are present in the grid object, but they are not current (reflecting the changes the user has made client side).
0
Princy
Top achievements
Rank 2
answered on 12 Jun 2014, 06:20 AM
Hi Erik,
Please take a look at the sample code snippet which shows the column hidden and shown.
ASPX:
C#:
Thanks,
Princy
Please take a look at the sample code snippet which shows the column hidden and shown.
ASPX:
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
OnAjaxRequest
=
"RadAjaxManager1_AjaxRequest"
>
</
telerik:RadAjaxManager
>
<
telerik:RadCodeBlock
ID
=
"RadCodeBlock1"
runat
=
"server"
>
<
script
type
=
"text/javascript"
>
function columnDisplayChanged(sender, args) {
var colUniqueName = args.get_gridColumn().get_uniqueName();
$find("<%= RadAjaxManager1.ClientID %>").ajaxRequest(colUniqueName + "display");
}
</
script
>
</
telerik:RadCodeBlock
>
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
AutoGenerateColumns
=
"false"
DataSourceID
=
"SqlDataSource1"
EnableHeaderContextMenu
=
"true"
AllowPaging
=
"true"
>
<
MasterTableView
>
<
Columns
>
<
telerik:GridBoundColumn
UniqueName
=
"OrderID"
DataField
=
"OrderID"
HeaderText
=
"OrderID"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"ShipCity"
HeaderText
=
"ShipCity"
UniqueName
=
"ShipCity"
/>
<
telerik:GridBoundColumn
DataField
=
"ShipVia"
HeaderText
=
"ShipVia"
UniqueName
=
"ShipVia"
/>
<
telerik:GridBoundColumn
DataField
=
"ShipCountry"
HeaderText
=
"ShipCountry"
UniqueName
=
"ShipCountry"
/>
<
telerik:GridBoundColumn
DataField
=
"CustomerID"
HeaderText
=
"CustomerID"
UniqueName
=
"CustomerID"
/>
<
telerik:GridBoundColumn
DataField
=
"EmployeeID"
HeaderText
=
"EmployeeID"
UniqueName
=
"EmployeeID"
/>
</
Columns
>
</
MasterTableView
>
<
ClientSettings
>
<
ClientEvents
OnColumnHidden
=
"columnDisplayChanged"
OnColumnShown
=
"columnDisplayChanged"
/>
</
ClientSettings
>
</
telerik:RadGrid
>
<
asp:SqlDataSource
ID
=
"SqlDataSource1"
runat
=
"server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT * FROM [Orders]"></
asp:SqlDataSource
>
C#:
protected
void
RadAjaxManager1_AjaxRequest(
object
sender, AjaxRequestEventArgs e)
{
if
(e.Argument.IndexOf(
"display"
) != -1)
{
string
colUniqueName = e.Argument.Substring(0, e.Argument.IndexOf(
"display"
));
GridColumn hiddenColumn = RadGrid1.MasterTableView.GetColumnSafe(colUniqueName)
as
GridColumn;
RadAjaxManager1.Alert(colUniqueName +
" display - "
+ hiddenColumn.Display);
}
}
Thanks,
Princy
0
Erik
Top achievements
Rank 1
answered on 14 Jun 2014, 05:30 AM
Great! That's exactly what I needed. Thank you.
0
DogBizPro
Top achievements
Rank 1
answered on 11 Oct 2017, 12:07 AM
What am I missing? The server code is not being called for me.