2009-04-29 6 views
0

J'ai actuellement un Gridview, Et je veux utiliser la validation côté client pour m'assurer qu'une ligne a été sélectionnée (ie: SelectedIndex > -1).Gridview: Valide que SelectedIndex> -1

En ce moment j'utilise <asp:CustomValidator> mais je veux m'éloigner de la validation côté serveur. Voici ce que je suis en train de faire:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"> 
    <Columns> 
     <asp:BoundField HeaderText="MSN" DataField="MSN" /> 
     <asp:CommandField ShowSelectButton="True" /> 
    </Columns> 
</asp:GridView> 
<asp:CustomValidator ID="cvSelected" runat="server" ErrorMessage="Please select!" /> 

Et puis dans le code derrière (.cs):

Private Sub cvSelected_ServerValidate(ByVal source As Object, ByVal args As _ 
System.Web.UI.WebControls.ServerValidateEventArgs) Handles cvSelected.ServerValidate 
    args.IsValid = (GridView1.SelectedIndex > -1) 
End Sub 

Répondre

1

Cela semble OK pour moi. La validation côté client dans ce cas particulier semble un peu floue, comme peut-être vérifier un élément que vous attendez d'avoir une partie d'un ID généré par le serveur. Très fragile

Habituellement, je vais faire une étape supplémentaire et en fait créer mon propre contrôle de validation qui hérite de BaseValidator. Rend l'encapsulation et le nettoyage SoC, ainsi que la logique de validation portable.

0

En cas de votre code derrière la page, vous pouvez ajouter des attributs à la balise de ligne comme si GridView_RowCreated():

e.Row.Attributes.Add("onclick", "SetRowSelected();"); 

Ensuite, vous devez inclure la fonction javascript « SetRowSelected() » dans votre page, et l'a mis un champ caché (appelé IsRowSelected, par exemple) à une valeur comme "vrai".

Ensuite, vous pouvez ajouter une autre fonction javascript à l'événement "onclick" du contrôle utilisé pour soumettre la page - et lui faire vérifier la valeur du contrôle caché. Si ce n'est pas le cas, affichez simplement une alerte() à l'utilisateur - sinon soumettez la page.

Est-ce que cela semble fonctionner?

Questions connexes