This is a migrated thread and some comments may be shown as answers.

RadGrid Column.Display not actual

6 Answers 244 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Thomas
Top achievements
Rank 1
Thomas asked on 10 Apr 2014, 02:37 PM

Hi there,

I check the display-property of the columns of a RadGrid on PreRender, but it isn't actual.

If I Hide/Show another Column or sort a column, the PreRender Function gives the correct display-property.

Here my code:

<%

 

@

Page

Language

="VB"

AutoEventWireup

="false"

CodeBehind

="Default.aspx.vb"

Inherits

="TelerikWebAppHideUnhideColBug._Default"

%>

 

<%

 

 

@

Register

Assembly

="Telerik.Web.UI"

Namespace

="Telerik.Web.UI"

TagPrefix

="telerik"

%>

 

 

<!

 

 

DOCTYPE

html

PUBLIC

"-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

 

<

 

 

html

xmlns

="http://www.w3.org/1999/xhtml">

 

<

 

 

 

head

id

="Head1"

runat

="server">

 

 

 

 

<

title

></

title

>

 

</

 

 

 

head

>

 

<

 

 

 

body

>

 

 

 

 

<

form

id

="form1"

runat

="server">

 

 

 

 

<

script

type

="text/javascript">

 

 

 

 

function

RadGridCSC_ColumnHidden(sender, args) {

 

$find(

 

 

"<%= RadAjaxManager1.ClientID %>"

).ajaxRequest(

"ColumnHidden"

);

 

}

 

 

 

function

RadGridCSC_ColumnShown(sender, args) {

 

$find(

 

 

"<%= RadAjaxManager1.ClientID %>"

).ajaxRequest(

"ColumnShown"

);

 

}

 

 

 

function

RadGridCSC_ColumnRezised(sender, args) {

 

$find(

 

 

"<%= RadAjaxManager1.ClientID %>"

).ajaxRequest(

"ColumnRezised"

);

 

}

 

 

 

</

script

>

 

 

 

 

<

telerik

:

RadAjaxManager

ID

="RadAjaxManager1"

runat

="server">

 

 

 

 

</

telerik

:

RadAjaxManager

>

 

 

 

 

 

<

telerik

:

RadScriptManager

ID

="RadScriptManager1"

runat

="server"></

telerik

:

RadScriptManager

>

 

 

 

 

 

<

div

>

 

 

 

 

<

telerik

:

RadGrid

ID

="RadGrid1"

runat

="server"

AllowFilteringByColumn

="True"

 

 

 

 

AllowPaging

="True"

PageSize

="50"

Width

="100%"

Height

="650"

AllowSorting

="True"

CellSpacing

="0"

 

 

 

 

EnableHeaderContextMenu

="true"

EnableHeaderContextFilterMenu

="true">

 

 

 

 

 

<

GroupingSettings

CaseSensitive

="false"></

GroupingSettings

>

 

 

 

 

<

MasterTableView

AutoGenerateColumns

="false"

AllowFilteringByColumn

="True"

CommandItemDisplay

="Top"

width

="100%"

ClientDataKeyNames

="ProductID">

 

 

 

 

<

PagerStyle

AlwaysVisible

="true"

Mode

="NextPrevAndNumeric"

/>

 

 

 

 

<

Columns

>

 

 

 

 

<

telerik

:

GridBoundColumn

DataField

="ProductID"

Visible

="true"

FilterControlWidth

="60%"

HeaderStyle-Width

="80"

ItemStyle-Width

="60"

HeaderText

="ProductID"

UniqueName

="Version2"

ColumnGroupName

="SoftwareInformation"

ItemStyle-HorizontalAlign

="Left"

HeaderStyle-HorizontalAlign

="Left"

/>

 

 

 

 

<

telerik

:

GridBoundColumn

DataField

="ProductName"

Visible

="true"

FilterControlWidth

="80%"

HeaderStyle-Width

="200"

ItemStyle-Width

="200"

HeaderText

="Product Name"

UniqueName

="ProductName"

ColumnGroupName

="SoftwareInformation"

ItemStyle-HorizontalAlign

="Left"

HeaderStyle-HorizontalAlign

="Left"

/>

 

 

 

 

<

telerik

:

GridBoundColumn

DataField

="UnitPrice"

 

 

 

 

Visible

="true"

DataType

="System.String"

FilterListOptions

="VaryByDataType"

 

 

 

 

FilterControlWidth

="80%"

HeaderStyle-Width

="270"

ItemStyle-Width

="270"

 

 

 

 

HeaderText

="UnitPrice"

 

 

 

 

UniqueName

="UnitPrice"

ColumnGroupName

="SoftwareInformation"

 

 

 

 

ItemStyle-HorizontalAlign

="Left"

HeaderStyle-HorizontalAlign

="Left"/>

 

 

 

 

<

telerik

:

GridBoundColumn

DataField

="ReorderLevel"

Visible

="true"

FilterControlWidth

="60%"

HeaderStyle-Width

="80"

ItemStyle-Width

="60"

HeaderText

="ReorderLevel"

UniqueName

="ReorderLevel"

ColumnGroupName

="SoftwareInformation"

ItemStyle-HorizontalAlign

="Left"

HeaderStyle-HorizontalAlign

="Left"

/>

 

 

 

 

<

telerik

:

GridBoundColumn

DataField

="Discontinued"

Visible

="true"

FilterControlWidth

="80%"

HeaderStyle-Width

="200"

ItemStyle-Width

="200"

HeaderText

="Discontinued"

UniqueName

="Discontinued"

ColumnGroupName

="SoftwareInformation"

ItemStyle-HorizontalAlign

="Left"

HeaderStyle-HorizontalAlign

="Left"

/>

 

 

 

 

</

Columns

>

 

 

 

 

</

MasterTableView

>

 

 

 

 

 

<

ClientSettings

AllowColumnsReorder

="true"

ReorderColumnsOnClient

="false">

 

 

 

 

<

DataBinding

Location

="http://demos.kendoui.com/service/Northwind.svc"

ResponseType

="JSONP">

 

 

 

 

<

DataService

TableName

="Products"

Type

="OData"

/>

 

 

 

 

</

DataBinding

>

 

 

 

 

<

Scrolling

 

 

 

 

AllowScroll

="true"

 

 

 

 

UseStaticHeaders

="true"

 

 

 

 

ScrollHeight

="300px"

/>

 

 

 

 

<

ClientEvents

OnColumnShowing

="RadGridCSC_ColumnShown"

OnColumnHidden

="RadGridCSC_ColumnHidden"

/>

 

 

 

 

</

ClientSettings

>

 

 

 

 

</

telerik

:

RadGrid

>

 

 

 

 

</

div

>

 

 

 

 

</

form

>

 

</

 

 

 

body

>

 

</​

 

 

 

html

>

 

​



Imports

 

 

Telerik.Web.UI

 

 

Partial

 

 

Class

_Default

 

 

 

 

Inherits

System.Web.UI.

Page

 

 

 

 

Private

Sub

RadGrid1_PreRender(sender

As

Object

, e

As

System.

EventArgs

)

Handles

RadGrid1.PreRender

 

 

 

 

Dim

col

As

Telerik.Web.UI.

GridBoundColumn

 

 

col = RadGrid1.Columns.FindByUniqueName(

 

"Version2"

)

 

 

 

 

Debug

.Print(col.UniqueName +

":"

+ col.di.Display.ToString)

 

 

 

 

End

Sub

 

End

 

 

 

Class​

 

 

 

​​​​​​​
If I toogle the hide/show a column the Output are:

Version2:True

Version2:False

Version2:False

Version2:False

Version2:False

Version2:False


How can I get the actual display of a Column?

Thanks
Thomas

6 Answers, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 11 Apr 2014, 04:20 AM
Hi Thomas,

Its hard to read your code. Please attach the code again using the Format Code Block, from the formatting options and elaborate on your requirement.
If you are trying to set the visible property of a column, please try the following code snippet.

VB:
RadGrid1.Columns.FindByUniqueName("ColumnUniqueName").Visible = True
'OR
RadGrid1.MasterTableView.GetColumn("ColumnUniqueName").Visible = True

Thanks,
Princy

0
Thomas
Top achievements
Rank 1
answered on 11 Apr 2014, 08:02 AM
<%@ Page Language="VB" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="TelerikWebAppHideUnhideColBug._Default" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  
<head id="Head1" runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <script type="text/javascript">
            function RadGridCSC_ColumnHidden(sender, args) {
                $find("<%= RadAjaxManager1.ClientID %>").ajaxRequest("ColumnHidden");
            }
            function RadGridCSC_ColumnShown(sender, args) {
                $find("<%= RadAjaxManager1.ClientID %>").ajaxRequest("ColumnShown");
            }
            function RadGridCSC_ColumnRezised(sender, args) {
                $find("<%= RadAjaxManager1.ClientID %>").ajaxRequest("ColumnRezised");
            }
        </script>
  
        <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">        
        </telerik:RadAjaxManager>
      
    <telerik:RadScriptManager ID="RadScriptManager1" runat="server"></telerik:RadScriptManager>
      
    <div>
    <telerik:RadGrid ID="RadGrid1" runat="server" AllowFilteringByColumn="True"  
        AllowPaging="True" PageSize="50"  Width="100%" Height="650" AllowSorting="True" CellSpacing="0" 
        EnableHeaderContextMenu="true" EnableHeaderContextFilterMenu="true">
          
        <GroupingSettings CaseSensitive="false"></GroupingSettings>
        <MasterTableView AutoGenerateColumns="false" AllowFilteringByColumn="True" CommandItemDisplay="Top" width="100%" ClientDataKeyNames="ProductID">
  
            <PagerStyle AlwaysVisible="true" Mode="NextPrevAndNumeric" />
            <Columns>
                <telerik:GridBoundColumn DataField="ProductID" Visible="true" FilterControlWidth="60%"  HeaderStyle-Width="80" ItemStyle-Width="60" HeaderText="ProductID" UniqueName="Version2" ColumnGroupName="SoftwareInformation" ItemStyle-HorizontalAlign="Left" HeaderStyle-HorizontalAlign="Left" /> 
                <telerik:GridBoundColumn DataField="ProductName" Visible="true" FilterControlWidth="80%" HeaderStyle-Width="200" ItemStyle-Width="200"  HeaderText="Product Name" UniqueName="ProductName" ColumnGroupName="SoftwareInformation" ItemStyle-HorizontalAlign="Left" HeaderStyle-HorizontalAlign="Left" />
                <telerik:GridBoundColumn DataField="UnitPrice" 
                                        Visible="true" DataType="System.String" FilterListOptions="VaryByDataType" 
                                        FilterControlWidth="80%" HeaderStyle-Width="270" ItemStyle-Width="270"  
                                        HeaderText="UnitPrice" 
                                        UniqueName="UnitPrice" ColumnGroupName="SoftwareInformation" 
                                        ItemStyle-HorizontalAlign="Left" HeaderStyle-HorizontalAlign="Left"/> 
                <telerik:GridBoundColumn DataField="ReorderLevel" Visible="true" FilterControlWidth="60%"  HeaderStyle-Width="80" ItemStyle-Width="60" HeaderText="ReorderLevel" UniqueName="ReorderLevel" ColumnGroupName="SoftwareInformation" ItemStyle-HorizontalAlign="Left" HeaderStyle-HorizontalAlign="Left" /> 
                <telerik:GridBoundColumn DataField="Discontinued" Visible="true" FilterControlWidth="80%"  HeaderStyle-Width="200" ItemStyle-Width="200" HeaderText="Discontinued" UniqueName="Discontinued" ColumnGroupName="SoftwareInformation"  ItemStyle-HorizontalAlign="Left" HeaderStyle-HorizontalAlign="Left" /> 
            </Columns>
        </MasterTableView>
  
  
        <ClientSettings AllowColumnsReorder="true" ReorderColumnsOnClient="false">
             <DataBinding Location="http://demos.kendoui.com/service/Northwind.svc" ResponseType="JSONP">
                    <DataService TableName="Products" Type="OData" />
                </DataBinding>                
            <Scrolling 
            AllowScroll="true" 
            UseStaticHeaders="true" 
            ScrollHeight="300px" />         
            <ClientEvents OnColumnShowing="RadGridCSC_ColumnShown" OnColumnHidden="RadGridCSC_ColumnHidden" />
        </ClientSettings>
    </telerik:RadGrid>
  
    </div>
    </form>
</body>
</html>
Imports Telerik.Web.UI
  
Partial Class _Default
    Inherits System.Web.UI.Page
  
    Private Sub RadGrid1_PreRender(sender As Object, e As System.EventArgs) Handles RadGrid1.PreRender
        Dim col As Telerik.Web.UI.GridBoundColumn
        col = RadGrid1.Columns.FindByUniqueName("Version2")
        Debug.Print(col.UniqueName + ":" + col.Display.ToString)
    End Sub
End Class
0
Thomas
Top achievements
Rank 1
answered on 11 Apr 2014, 08:05 AM
I don't want to set the visible of a column, I want to know if the user hide/unhide a column and if the column is now hidden or not.
0
Princy
Top achievements
Rank 2
answered on 14 Apr 2014, 05:16 AM
Hi Thomas,

The context menu options hide the columns on client-side. Take a look at the below sample code where I demonstrated how to raise a server event on column hiding or showing.

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" EnableHeaderContextMenu="true" AllowPaging="true">
    <MasterTableView >
        <Columns>
           . . . . . .
        </Columns>
    </MasterTableView>
    <ClientSettings>
        <ClientEvents OnColumnHidden="columnDisplayChanged" OnColumnShown="columnDisplayChanged" />
    </ClientSettings>
</telerik:RadGrid>

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
Thomas
Top achievements
Rank 1
answered on 14 Apr 2014, 10:10 AM
Thanks for the reply

I have the same Problem with your code. The .display is ever false (hidden or not).

0
Viktor Tachev
Telerik team
answered on 15 Apr 2014, 12:21 PM
Hi Thomas,

Would you elaborate more on what you would like to achieve in the scenario you are implementing? What are your requirements and what should be the expected result?

Please note that if you would like to persist the RadGrid settings with RadPersistenceFramework you need to use server-side binding. When client-side binding is used for RadGrid, persisting its settings with RadPersistanceManager is not supported.


Regards,
Viktor Tachev
Telerik
 

Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.

 
Tags
Grid
Asked by
Thomas
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
Thomas
Top achievements
Rank 1
Viktor Tachev
Telerik team
Share this question
or