2016-07-07 3 views
0

Je rencontre un problème avec mon bouton de commande "save" et je suis à perte. J'ai inclus le code pour le formulaire et le code-behind. J'ai ajouté quelques tests pour voir si l'événement se déclenche et il ne semble pas l'être. Toute aide est appréciée. Je suis un codeur novice alors excusez-moi s'il y a des problèmes évidents ou une meilleure façon de procéder. L'objectif ultime est de mettre à jour l'entrée dans la base de données pour les informations d'écran données, puis de les réafficher pour les mettre à jour.L'événement LinkButton C# OnClick ne se déclenche pas dans Formview ItemTemplate

Encore merci d'avance.

UPDATE: I have included the FULL-ish CODE: (removed the sensitive info) 

CodeBehind:

using System; 
using System.Configuration; 
using System.Collections.Generic; 
using System.Data; 
using System.Data.SqlClient; 
using System.Linq; 
using System.Text; 
using System.Text.RegularExpressions; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class matter : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     ...   
    } 

    protected void fvdoc_ItemCommand(object sender, FormViewCommandEventArgs e) 
    { 
     if (e.CommandName == "Update") 
     { 
      throw new Exception("Clicked"); 
     } 
     throw new Exception("i've been Clicked"); 
    } 
} 

PAGE:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="matter.aspx.cs" Inherits="matter" %> 

<!DOCTYPE html> 

<html> 
<head> 
     <title>Wasatch Client Matter Index</title> 
     <link rel="shortcut icon" href="~/favicon.ico" type="image/x-icon" /> 
     <meta name="viewport" charset="utf-8" content="width=device-width, initial-scale=1, user-scalable=no"/> 

     <!-- Latest compiled and minified CSS --> 
     <link rel='stylesheet' href='https://fonts.googleapis.com/css?family=Ubuntu+Condensed' type='text/css' /> 
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous" /> 
     <link rel="stylesheet" href="Content/themes/Site.css" /> 
     <!-- Latest compiled JavaScript --> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"/> 

    </head> 
<body> 
    <div class="navbar"> 
      <div class="row"> 
       <h1 class="col-lg-8 col-lg-offset-2 text-center " style="align-content:center;">Matter Index </h1> 
      </div> 
     </div> 

    <div class="container-fluid"> 
    <form id="form1" runat="server"> 
     <div class="row"> 
      <div class="col-lg-10 col-lg-offset-1 form-group"> 
       <asp:FormView ID="fvdoc" runat="server" DataSourceID="gvdb" OnItemCommand="fvdoc_ItemCommand"> 
        <ItemTemplate> 
         <h2 class="col-md-12"><asp:Label ID="tbname" runat="server" Text=<%# Bind("docid") %> /> - <asp:Label ID="lbID" runat="server" Text=<%# Bind("sName") %> /></h2> 

           <div class="left col-md-10"> 
            <legend>Matter Info:</legend> 
             <div class="form-group"><asp:Label runat="server" Text="Matter" AssociatedControlID="dcname"/> 
             <asp:TextBox ID="dcname" runat="server" CssClass="form-control" Text=<%# DataBinder.Eval(Container.DataItem,"sDocname") %> Enabled="true"/></div> 
           </div> 

           <div class="left col-md-10"> 
            <hr /> 
             <div class="form-group"><asp:Label runat="server" Text="Notes/Comments" AssociatedControlID="dcnotes" /> 
             <asp:TextBox ID="dcnotes" runat="server" Rows="3" TextMode="MultiLine" Text=<%# Bind("sdocdesc") %> Enabled="true"/></div> 
           </div> 

           <div class="left col-md-6 col-md-offset-5 txsmall"> 
            <asp:Label runat="server" Text="Filed: " Font-Bold="true" /><asp:Label ID="lblfiledate" runat="server" Text=<%# Bind("dtFiledate") %> CssClass="txsmall" Font-Italic="true" /> 
            <asp:Label runat="server" Text="Modified: " Font-Bold="true" /><asp:Label ID="lblmodify" runat="server" Text=<%# Bind("dtLastModified") + " - " + Bind("susermodified") %> CssClass="txsmall" Font-Italic="true"/> 

            <asp:Label runat="server" CssClass="txsmall" id="lbltest"/> 
           </div> 
           <div class="clear-fix col-md-12"> 
            <div class="form-group"> 
             <asp:LinkButton runat="server" Text="Save" ID="SaveButton" CommandName="Update" CssClass="clear-fix btn btn-primary" />&nbsp; 
             <asp:LinkButton runat="server" Text="Move" ID="MoveButton" CssClass="clear-fix btn btn-primary" CausesValidation="False" href="m.aspx" />&nbsp; 
             <asp:LinkButton runat="server" Text="Home" ID="HomeButton" CssClass="clear-fix btn btn-primary" CausesValidation="False" href="default.aspx"/> 
            </div> 
           </div> 
        </ItemTemplate> 

       </asp:FormView> 
      </div> 
     </div> 
     <hr class="col-lg-10 col-lg-offset-1" /> 

    </form> 

    </div> 
    ... 
</body> 
</html> 
+0

Vous dites que "cela ne semble pas être le cas". Quel genre de test avez-vous essayé? Avez-vous essayé d'ajouter un point de rupture? – meJustAndrew

+0

Oui. J'ai utilisé des points d'arrêt, raiseerror, etc. –

+0

Pouvez-vous faire 'protected void SaveButton_Click (expéditeur d'objet, EventArgs e) { throw new Exception (" J'ai été cliqué "); } 'et voyez ce que vous obtenez? Désolé parce que j'ai l'air si méfiant, mais votre code semble assez valide. – meJustAndrew

Répondre

0

Votre bouton lien est présent à l'intérieur d'un modèle d'élément formview comme on peut le voir ci-dessous et donc vous ne serez pas obtenir l'événement de contrôle individuel (onclick événement de linkbutton). Plutôt que vous devez gérer la FormView.ItemCommand et faire votre traitement comme

<asp:FormView ID="fvdoc" runat="server" 
DataSourceID="gvdb" onitemcommand="itemCommandClick"> 

<ItemTemplate> 

....... 
<asp:LinkButton runat="server" Text="Save" ID="SaveButton" CommandName="Update" ......... 

Dans le code derrière la poignée cela comme

void itemCommandClick(Object sender, FormViewCommandEventArgs e) 
    { 
    if (e.CommandName == "Update") 
    { 
     LinkButton button = e.CommandSource as LinkButton; 
     //Do rest of the processing 
    } 
} 
+0

<% @ Page Language = "C#" AutoEventWireup = "true" CodeFile = "matter.aspx.cs" Inherits = "matter"%> –

+0

@MikeC, mon mauvais n'a pas vu votre message correctement. Voir la réponse éditée si cela vous aide. – Rahul

+0

Ajouté que. '' BOUTON: ' 'codeBehind:' fvdoc_ItemCommand protégé vide (expéditeur d'objet, FormViewCommandEventArgs e) { if (e.CommandName == "Mise à jour") { throw new Exception ("Cliqué"); } throw new Exception ("J'ai été cliqué"); } 'toujours pas de tir –

0

Votre FormView manque le EditItemTemplate, comme ceci:

  <asp:FormView ID="fvdoc" runat="server" DataSourceID="gvdb" OnItemCommand="fvdoc_ItemCommand"> 
       <ItemTemplate> 
        <!--... Use readonly controls like Label etc...--> 
        <asp:LinkButton runat="server" Text="Save" ID="EditButton" CommandName="Edit" CssClass="clear-fix btn btn-primary" /> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <!--... Use editable controls like TextBox etc...--> 
        <asp:LinkButton runat="server" Text="Save" ID="SaveButton" CommandName="Update" CssClass="clear-fix btn btn-primary" /> 
       </EditItemTemplate> 
      </asp:FormView> 

Pour le clic sur le bouton Éditer, passez en mode Édition, puis manipulez le bouton Enregistrer pour enregistrer les nouvelles valeurs.

Voir le MSDN docs pour plus d'informations.