2010-11-08 8 views
0

Supposons que j'ai un GridView sur la page. GridView a une colonne d'édition activée et affiche certains enregistrements. Comment puis-je activer/désactiver l'édition en lignes en fonction d'autres champs de données?Modification facultative dans les lignes de GridView?

+0

Je ne sais pas ce que vous voulez dire. Voulez-vous désactiver/activer la capacité d'édition sur une ligne en fonction des données (par exemple, désactiver le bouton 'Edit' LinkButton sur une ligne si un champ est égal à true)? Ou, mettre automatiquement une ligne en mode édition en fonction du même type de condition? – Jamie

+0

@Jamie: Je veux dire "vouloir désactiver/activer la capacité d'édition sur une ligne basée sur des données (c'est-à-dire désactiver le" Link "Link sur une ligne si un champ est égal à true)" –

Répondre

2

Vous pouvez le faire de plusieurs façons. Deux d'entre eux sont:

Convertissez d'abord la colonne d'édition en champ de modèle.

Quel que soit le champ sur lequel vous souhaitez baser l'activation/désactivation, vous pouvez ajouter la propriété DataKeyNames de GridView.

ensuite sur l'événement OnRowDataBound vous pouvez effectuer les opérations suivantes:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowState == DataControlRowState.Normal) 
    { 
     var LinkButton1 = (LinkButton)e.Row.FindControl("LinkButton1"); 
     LinkButton1.Enabled = GridView1.DataKeys[e.Row.RowIndex].Value == "SomeValue"; //Or some other logic, like converting to a boolean 
    } 
} 

Ou,

Dans le balisage Html vous page ASPX, modifiez la propriété a permis de linkbutton pour lier le votre champ désiré. Tels que:

<asp:LinkButton ID="LinkButton1" runat="server" Text="Edit" Enabled='<%# Convert.ToBoolean(Eval("SomeField")%>'></asp:LinkButton> 

Espérons que cela aide.