2017-08-21 3 views
0

J'ai un gridview avec 10 colonnes et un nombre quelconque de lignes basé sur la date sélectionnée. Le gridview ressemble à ceci: enter image description heregridview rediriger onclick avec le paramètre

Plusieurs paramètres peuvent être sélectionnés pour générer cette vue de grille. J'essaie d'implémenter un événement onClick sur la colonne Weight Ticket. Je veux être capable de cliquer sur des tickets de poids individuels et la page redirigera vers une page différente qui montre les détails de ce ticket de poids.

J'ai essayé la mise en œuvre de ce qui suit: e.Row.cells[4].Attribute["onClick"] = redirectFunction

Cela n'a rien fait. Je suis incapable de cliquer sur le ticket de poids.

J'apprécierais vraiment toute aide à ce sujet.

exigence facultative

Cela ne demande pas de moi, mais je voudrais être en mesure d'ajouter quelque chose à ce sujet. La redirection se fait comme ceci:

Response.Redirect("~/pages/TicketDetails.aspx?wt=" + weightTicket + "&act=" + actionMethod +"&src=" + HttpContext.Current.Request.Url);

Le actionMethod est ce qui détermine si la page TicketDetails permet d'éditer. Si le actionMethod est défini sur View, vous ne pouvez pas le modifier. Si elle est définie sur Edit, vous pouvez. Je veux pouvoir dire dynamiquement à la fonction de redirection qu'il s'agit d'une action de vue ou d'une action de modification. Il est possible de regarder les colonnes In, Out ou Load #. Si l'un d'entre eux a NA, alors il s'agit d'une action edit. Si elles ont une valeur qui n'est pas NA, alors c'est une vue. Ceci est juste une demande supplémentaire. Je peux toujours l'ouvrir en tant que modifier et ne pas m'inquiéter de tout cela, mais il serait utile que je puisse le faire aussi.

Toute aide serait appréciée.

Merci

Edit 1:
La ligne que je l'ai écrit dans la question (ma tentative) est juste un pseudo-code. Voici la ligne réelle dans mon programme:

e.Row.Cells[4].Attributes["onClick"] = "dataCellClick(" + e.Row.Cells[4].ToString() + ", view;";

dataCellClick() est la fonction que je fais appel à son tour fait une redirection. J'ai essayé de ne pas appeler une fonction mais d'appeler la fonction de redirection juste ici et cela n'a pas fonctionné. Alors j'ai essayé ça. Les deux paramètres de l'appel de la fonction sont WeightTicket et actionMethod.

Edit 2:
Le gridview qui est déjà en place est dynamique. Par cela, je veux dire:

enter image description here

C'est ce que mon point de vue design ressemble à la page. Le gridview est sélectionné dans l'image. Il n'a pas toutes les colonnes énumérées un par un.Il obtient dynamiquement les colonnes ET les lignes à partir d'une requête.

Donc, ce sont toutes les propriétés du gestionnaire d'événements que j'ai:

enter image description here

je peux vous le dire bien que:
Les colonnes suivantes sont existants toujours dans le gridview:

  1. In
  2. Out
  3. Charge #
  4. Nom du vendeur
  5. Poids Ticket
  6. Vendeur BOL
  7. Camion brut
  8. Produit net

Ces colonnes sont standard et dans cet ordre.

Répondre

2

Cette partie de votre code est incorrect:

e.Row.cells[4].Attribute["onClick"] = redirectFunction 

Vous devriez éditer comme ça dans RowDataBound (je supposé e.Row.Cells[4].Text est le nom de la page):

e.Row.Cells[4].Attributes["onClick"] = "redirectFunction('"+e.Row.Cells[4].Text+"')"; 

redirectFunction est fonction JavaScript comme ceci (rediriger vers pageName.aspx):

<script> 
    function redirectFunction(pageName) { 
     window.location.href = pageName + ".aspx"; 
    } 
</script> 
+0

Ouais, j'avais la bonne syntaxe, je n'ai pas affiché la ligne exacte que j'ai utilisée dans mon programme, j'essayais de donner une idée d'un pseudocode que j'ai utilisé. Mais concernant la fonction de redirection étant un javascript, la fonction javascript va-t-elle dans le fichier aspx? Ou dans son propre fichier .js dans le dossier des scripts? –

+0

@CrazyCucumber 'redirectFunction' est dans le balisage aspx. –

+0

@CrazyCucumber Vous pouvez appeler cette fonction dans un fichier aspx ou js. –

0

Je vous suggère d'utiliser l'événement CellClick et vérifier, si un index de colonne cliqué est l'un des « poids Ticket » (ce qui est VB.NET):

Private Sub dgwList_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgwList.CellClick 
    If e.ColumnIndex = 4 Then 
     Call MyRedirectFunciton() 
    End If 
End Sub 

en C# il devrait quelque chose comme ceci:

private void dgwList_CellClick(object sender, DataGridViewCellEventArgs e) 
{ 
    if (e.ColumnIndex == 4) { 
     MyRedirectFunciton(); 
    } 
} 

Bien sûr, vous pouvez passer un RowIndex aussi ...

CellClick: enter image description here

+0

Cette fonction se comportera-t-elle comme un écouteur? Ou dois-je l'appeler quelque part pour détecter des clics? Je suis désolé, je suis nouveau à cela. –

+0

Non, seulement cliquer sur DataGridView dans Designer, dans les propriétés cliquez sur le bouton "Events", trouvez l'événement "CellClick" et double-cliquez sur un champ à côté, il créera une nouvelle fonction comme celle ci-dessus elle-même le datagridview. Ou copiez le code ci-dessus et assurez-vous de remplacer "dgwList après le mot clé" Handler "par le nom de votre DataGridView –

+0

Désolé, le mot clé" Handler "est uniquement dans VB.NET, mieux utiliser les" Evénements "dans Visual Studio –