2009-10-12 5 views
2

J'évalue actuellement certains contrôles RAD de Telerik, juste maintenant j'expérimente avec le RadGrid.RadGrid ne déclenche pas de publication sur les événements ItemCommand

J'ai donc mon contrôle de grille et activé la liaison côté client pour avoir le support Ajax. J'ai créé un service Web WCF approprié pour récupérer les données, etc. Tout fonctionne très bien, y compris la pagination, etc. Maintenant, je voulais avoir une colonne de boutons pour supprimer certains éléments. J'ai enregistré l'événement OnItemCommand de la grille et l'ai implémenté en conséquence du côté du serveur. Mon code ASPx ressemble à ceci:

<telerik:RadGrid runat="server" ID="RadGrid1" AllowPaging="True" AllowSorting="True" 
    AutoGenerateColumns="False" GridLines="None" 
    OnItemCommand="RadGrid1_ItemCommand"> 
    <MasterTableView DataKeyNames="Id" ClientDataKeyNames="Id"> 
     <Columns> 
      <telerik:GridBoundColumn DataField="Firstname" HeaderText="Firstname" DataType="System.String"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn DataField="Lastname" HeaderText="Lastname" DataType="System.String"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn DataField="Age" HeaderText="Age" DataType="System.Int32"> 
      </telerik:GridBoundColumn> 
      <telerik:GridButtonColumn CommandName="Delete" Text="Delete" UniqueName="DeleteColumn" 
       ButtonType="ImageButton"> 
      </telerik:GridButtonColumn> 
     </Columns> 
     <PagerStyle Mode="Slider" /> 
    </MasterTableView> 
    <ClientSettings> 
     <DataBinding SelectMethod="GetSampleData" Location="Webservice/GridData.svc" SortParameterType="String"> 
     </DataBinding> 
    </ClientSettings> 
</telerik:RadGrid> 

Cependant en cliquant sur le bouton approprié sur une grille en ligne l'événement ne se déclenche pas, fondamentalement aucune publication sur le serveur est fait. Une solution que j'ai trouvée est d'ajouter le "EnablePostBackOnRowClick=true" au ClientSettings, mais cela provoquerait une publication à chaque clic sur une ligne, ce qui n'est pas vraiment désiré.

Existe-t-il une meilleure façon de réaliser cela ou quelqu'un a-t-il une idée de ce qui pourrait être le problème?

Thx

+0

Je ne comprends pas. Voulez-vous que la publication se produise ou non ??? Votre description est contradictoire: "l'événement n'est pas déclenché, fondamentalement aucune publication sur le serveur n'est en cours ... mais cela provoquerait une publication à chaque clic sur une ligne, ce qui n'est pas vraiment souhaité" – Bryan

+0

Le problème est que si j'active le "EnablePostBackOnRowClick" la publication est faite en cliquant simplement sur un endroit arbitraire sur la ligne. Je voudrais déclencher la publication juste quand l'un des boutons d'action est pressé. – Juri

Répondre

0

J'ai eu le même problème avec les contrôles telerik. J'ai résolu ce problème en recréant le contrôle à partir de zéro avec un nouveau nom, puis en reconstruisant ma structure.

Hope it helps

2

vous devez gérer le client événement "OnCommand", ou plus utiliser de façon appropriée le client commande "RowDataBound". Dans la commande RowDataBound, vous pouvez trouver votre bouton rad et y attacher un événement. La seule autre façon de le faire est de gérer l'événement "onclicking" du client à partir du bouton lui-même.

Exemple de liaison au OnCommand et Row DataBound:
<ClientSettings> <ClientEvents OnCommand="Grid_Command" OnRowDataBound="Grid_RowDataBound" /> </ClientSettings> puis dans votre javascript enveloppé dans un bloc de code rad ont les méthodes suivantes:

<script type="javascript"> 
function Grid_RowDataBound(sender, args) { 
    var item = args.get_item(); 
    var data = args.get_dataItem(); 
    var btn = $find('DeleteColumn'); 
    btn.add_clicking(delegate); // where delegate is the function you provide for the click 
    // ... // 
} 

`

1

Je sais que ce qui est ancien , mais il apparaît encore haut dans les résultats de Google. Il y a maintenant une solution à cela, peut-être d'autres aussi ...

Vous pouvez obtenir un postback en utilisant une colonne de modèle

<telerik:GridTemplateColumn UniqueName="myuniquename"> 
<ItemTemplate> 
    <telerik:RadButton ID="RadButton1" runat="server" ButtonType="StandardButton" AutoPostBack="true" CommandName="MyCommand" UseSubmitBehavior="false" Text="Button Text" /> 
</ItemTemplate> 
</telerik:GridTemplateColumn> 

Bien que je ne suis pas sûr si vous avez besoin « UseSubmitBehavior » propriété.

0

RegisterWithScriptManager = "false" cela peut fonctionner aussi ..

Questions connexes