2010-09-07 4 views
0

J'ai un formulaire que j'utilise pour mettre à jour un enregistrement. Il y a un bouton de lien qui quand les incendies devraient perforer la mise à jour par l'intermédiaire de BLL et de DAL. Je n'utilise pas d'ODS intégré et je ne vais pas l'utiliser.FormView Manuel liaison de données

J'ai toutes mes grilles et maquillages remplis manuellement en appelant des méthodes qui récupèrent les données de la base de données.

Par exemple mes détails vue est peuplé comme celui-ci:

protected void DlMembers_ItemCommand(object source, DataListCommandEventArgs e) 
{ 
    if (e.CommandName.ToString() == "Select") 
    { 
     DlMembers.Visible = false; 
     lblError.Text = string.Empty; 
     lblError.Visible = false; 
     fvMemberDetail.Visible = true; 
     fvMemberDetail.ChangeMode(FormViewMode.Edit); 

     MemberBLL getMemberInfo = new MemberBLL(); 

     int Ident = Convert.ToInt32(e.CommandArgument.ToString()); 

     fvMemberDetail.DataSource = getMemberInfo.GetMemberByIdent(Ident); 
     fvMemberDetail.DataBind(); 

    } 

    if (e.CommandName.ToString() == "DeleteSelected") 
    { 
     DlMembers.Visible = true; 
     lblError.Text = string.Empty; 
     lblError.Visible = false; 
     fvMemberDetail.Visible = false; 
     fvMemberDetail.ChangeMode(FormViewMode.ReadOnly); 
    } 

Ce que je veux faire si à capature mon linkbutton sur événement click et faire (sauf que le temps d'exécution n'a jamais atteint cette méthode):

protected void MemberInfoUpdating(object sender, EventArgs e) 
{ 
    TextBox id = (TextBox)fvMemberDetail.FindControl("txtIdent"); 

    if (id.Text != string.Empty || id.Text != "") 
    { 
     TextBox txtFN = (TextBox)fvMemberDetail.FindControl("txtFN"); 
     TextBox txtLN = (TextBox)fvMemberDetail.FindControl("txtLN"); 
     DropDownList ddlAddress = (DropDownList)fvMemberDetail.FindControl("ddlAddress"); 
     TextBox txtEmail = (TextBox)fvMemberDetail.FindControl("txtEmail"); 
     TextBox txtHPhone = (TextBox)fvMemberDetail.FindControl("txtHPhone"); 
     TextBox txtWPhone = (TextBox)fvMemberDetail.FindControl("txtWPhone"); 
     TextBox txtMPhone = (TextBox)fvMemberDetail.FindControl("txtMPhone"); 
     DropDownList ddlPos = (DropDownList)fvMemberDetail.FindControl("ddlPos"); 
     DropDownList ddlIsAdmin = (DropDownList)fvMemberDetail.FindControl("ddlIsAdmin"); 
     bool blIsAdmin = false; 
     if (ddlIsAdmin.SelectedValue == "True") blIsAdmin = true; 
     TextBox txtComments = (TextBox)fvMemberDetail.FindControl("txtComments"); 

     MemberBLL updateMemberInfo = new MemberBLL(); 

     bool UpdateOK = updateMemberInfo.UpdateMemberByIdent(
         txtFN.Text, 
         txtLN.Text, 
         ddlAddress.SelectedValue, 
         txtEmail.Text, 
         txtHPhone.Text, 
         txtWPhone.Text, 
         txtMPhone.Text, 
         blIsAdmin, 
         txtComments.Text, 
         Convert.ToInt32(ddlPos.SelectedValue), 
         Convert.ToInt32(id.Text)); 
    } 
    else 
    { 
     //Display error - no user id cannot update record 
    } 
} 

Le linkbutton ressemble à ceci:

<asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" 
       OnClick="MemberInfoUpdating" Text="Update" /> 

Répondre

0

Où est-ce LinkButton? Si elle est dans un modèle de FormView, alors vous aurez probablement besoin d'utiliser quelque chose comme ceci:

<asp:LinkButton ID="UpdateButton" runat="server" CommandName="Update" Text="Update" /> 

poignée Puis la commande « Mise à jour » dans DlMembers_ItemCommand.

Vous pouvez également joindre votre code à l'événement OnItemUpdating du lieu FormView que d'un événement supplémentaire que vous n'avez pas besoin:

<asp:FormView ID="fvMemberDetail" runat="server" OnItemUpdating="MemberInfoUpdating"> 
+0

Aucun de ces incendies d'événements. Voici le balisage: – Risho

+0

Risho

+0

Hmmmm ... j'ai peur à perte alors. Je peux vous dire, cependant, que la cause la plus fréquente des événements non déclencheurs dans mon expérience est que les contrôles de base de données sont mal reliés - soit rebondir quand ils ne devraient pas être, ou lié dans le mauvais événement de cycle de vie de la page. – Bryan