2009-04-28 11 views
2

In their documentation Telerik sagt, dass es eine Möglichkeit gibt, die Sortierung für bestimmte Spalte zu deaktivieren, indem Sie AllowSorting-Eigenschaft verwenden. Ich sehe Telerik.Web.UI.GridColumn members und es gibt keine AllowSorting-Eigenschaft. Es gibt eine sortierbare Eigenschaft, die jedoch geschützt ist und überschrieben werden muss. Also, was verwende ich, um die Sortierung für bestimmte Spalte zu deaktivieren?Telerik RadGrid - Wie die Sortierung für eine Spalte deaktivieren?

Es gibt eine AllowSorting-Eigenschaft auf GridBoundColumn, aber in diesem Fall verwende ich GridTemplateColumn. Gibt es eine Möglichkeit, die Sortierung von GridTemplateColumn zu deaktivieren?

Antwort

4

Okay, ich den gewünschten Effekt bekam, drehte ich mich, indem GridTemplateColumn der SortingExpression Eigenschaft auf leere Sortierung ab.

Grid.Columns.FindByUniqueName("Type").SortExpression = string.Empty; 

Das sieht wie ein Hack aus. Warum gibt es keine explizite Eigenschaft zum Deaktivieren der Sortierung? Naja. Das funktioniert.

Wenn Sie einen besseren Weg kennen, lassen Sie es mich wissen.

Danke.

+1

Ich habe eine zusätzliche Probe in meinem ursprünglichen Beitrag bearbeitet. Es basiert auf dem, was Sie hier tun. Funktioniert das für dich? – pyrocumulus

+0

Ja. Grundsätzlich machen wir dasselbe. Nur mache ich es in Code-Behind und du machst es deklariert. –

+0

Ich weiß nicht, warum sie das AllowSorting nicht zur Verfügung gestellt haben, aber denken Sie nicht, dass es ein Hack ist, zumindest für die clientseitige Bindung, was das Sortierverhalten völlig deaktiviert. – Sameer

0

Hier ist ein Beispiel, das zeigt, wie die Sortierung für eine bestimmte Spalte deaktiviert wird.

Beachten Sie die AllowSorting-Eigenschaft auf der Grid-Ebene (für alle Spalten).

Beachten Sie in der Auflistung Columns, wie es für diese bestimmte Spalte deaktiviert ist.

<telerik:RadGrid ID="RadGrid1" runat="server" AllowSorting="True"> 
    <HeaderContextMenu> 
     <CollapseAnimation Duration="200" Type="OutQuint" /> 
    </HeaderContextMenu> 
    <MasterTableView> 
     <RowIndicatorColumn> 
      <HeaderStyle Width="20px" /> 
     </RowIndicatorColumn> 
     <ExpandCollapseColumn> 
      <HeaderStyle Width="20px" /> 
     </ExpandCollapseColumn> 
     <Columns> 
      <telerik:GridBoundColumn AllowSorting="False" UniqueName="column"> 
      </telerik:GridBoundColumn> 
     </Columns> 
    </MasterTableView> 
    <FilterMenu> 
     <CollapseAnimation Duration="200" Type="OutQuint" /> 
    </FilterMenu> 
</telerik:RadGrid> 

Für Templatecolumns, würde ich versuchen, auf der Netzebene Sortierung ausschalten und einfach auf den benötigten Spalten ermöglichen. Auf diese Weise müssen Sie nichts für die TemplateColumn tun, da diese standardmäßig deaktiviert wird.

+0

Ja, das ist eine AllowSorting Eigenschaft auf GridBoundColumn, aber in diesem Fall verwende ich GridTemplateColumn. Gibt es eine Möglichkeit, die Sortierung von GridTemplateColumn zu deaktivieren? –

+0

Ja, das würde funktionieren, aber es gibt keine Aktivierung/Deaktivierung der Sortiereigenschaft für GridTemplateColumn. –

6

Das AllowSorting-Attribut ist in der Quell-/Markupansicht in Visual Studio verfügbar. Zum Beispiel (vereinfacht):

<tr:RadGrid> 
    <MasterTableView> 
     <Columns> 
      <tr:GridBoundColumn DataField="field" HeaderText="Description" 
       AllowSorting="false" /> 
     </Columns> 
    </MasterTableView> 
    </tr:RadGrid> 

Ich weiß nicht, ob das für Sie funktioniert? Ich habe meine Gitter aus den Code-Behind-Dateien noch nicht instanziiert, also wenn Sie das tun, kann ich Ihnen nicht einfach helfen. Aber das obige funktioniert für mich.


EDIT:

Ah war es nicht klar, von der ursprünglichen Frage, dass Sie die GridTemplate Spalte verwendet haben. Da Sie jetzt die SortExpression-Eigenschaft verwenden, funktioniert das gleiche Attribut im Markup nicht für Sie? Also:

<tr:RadGrid> 
    <MasterTableView> 
     <Columns> 
      <tr:GridTemplateColumn HeaderText="Description" DataField="field" 
       SortExpression=""> 
       <!-- template here etc. --> 
      </tr:GridTemplateColumn> 
     </Columns> 
    </MasterTableView> 
    </tr:RadGrid> 
+0

Ja, in GridBoundColumn gibt es eine AllowSorting-Eigenschaft, aber in diesem Fall verwende ich GridTemplateColumn. Gibt es eine Möglichkeit, die Sortierung von GridTemplateColumn zu deaktivieren? –

+0

Dieser Weg ist einfacher als der untenstehende Codebehind – Sameer

0

Wenn Sie eine GridTemplateColumn verwenden, können Sie Ihre eigene headertemplate immer mit einem Label als Header anstelle einer Verknüpfungsschaltfläche angeben. A wir bisschen Extraarbeit, aber das funktioniert gut. Wenn Sie die Sortierung für alle GridTemplateColumns deaktivieren möchten, ist Ihr "Hack" am besten.

3

Telerik hat jetzt eine neue Eigenschaft mit dem Namen HeaderButtonType (existiert auch für eine Template-Spalte!), Die auf "None" gesetzt werden kann, um eine Beschriftung anstelle eines Linkbuttons für den Spaltenkopftext darzustellen.

0

Wie in der Telerik Docs erklärte:

Falls Sie nur für eine bestimmte Spalte Sortierung zu deaktivieren, Sie IsSortable Eigenschaft auf False Spalte konfigurieren:

es
<telerik:GridViewColumn IsSortable="False" /> 
Verwandte Themen