2010-11-23 15 views
1

J'ai une étiquette dans DetailsView. Je dois modifier la propriété Text de cette étiquette dans DetailsView après que l'événement ItemInserted a été déclenché.DétailsAfficher le texte dans une étiquette sur l'événement ItemInserted

Le script ne génère aucune erreur, mais le libellé ne modifie pas sa propriété de texte. Des idées de ce que je fais mal?

Merci pour votre temps!

Markup:

<asp:DetailsView ID="uxInsertAuthorInput" runat="server" AutoGenerateRows="False" 
     DataKeyNames="AuthorId" DataSourceID="EntityDataSourceCreateAuthor" DefaultMode="Insert" 
     OnItemInserting="uxInsertAuthor_ItemInserting" OnItemInserted="uxInsertAuthorInput_ItemInserted"> 
    <Fields> 
     <asp:TemplateField HeaderText="First Name" SortExpression="FirstName"> 
      <ItemTemplate> 
       <asp:Label ID="uxFirstNameDisplayer" runat="server" Text='<%# Bind("FirstName") %>' /> 
      </ItemTemplate> 
      <InsertItemTemplate> 
       <asp:TextBox ID="uxFirstNameInput" runat="server" Text='<%# Bind("FirstName") %>' /> 
       <asp:RequiredFieldValidator ID="uxRequiredFieldValidatorFirstName" runat="server" 
        ControlToValidate="uxFirstNameInput" ErrorMessage="First Name Field is required">*</asp:RequiredFieldValidator> 
      </InsertItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Last Name" SortExpression="LastName"> 
      <ItemTemplate> 
       <asp:Label ID="uxLastNameDisplayer" runat="server" Text='<%# Bind("LastName") %>' /> 
      </ItemTemplate> 
      <InsertItemTemplate> 
       <asp:TextBox ID="uxLastNameInput" runat="server" Text='<%# Bind("LastName") %>' /> 
       <asp:RequiredFieldValidator ID="uxRequiredFieldValidatorLastName" runat="server" 
        ControlToValidate="uxLastNameInput" ErrorMessage="Last Name Field is required">*</asp:RequiredFieldValidator> 
      </InsertItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="UserId" SortExpression="UserId"> 
      <InsertItemTemplate> 
       <asp:DropDownList ID="uxUserListSelector" runat="server" /> 
       <asp:Label ID="uxAllert" runat="server" Text="Label" /> 
      </InsertItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Profile" SortExpression="ContentAuthor"> 
      <ItemTemplate> 
       <asp:Label ID="uxContentAuthorDisplayer" runat="server" Text='<%# Bind("ContentAuthor") %>' /> 
      </ItemTemplate> 
      <InsertItemTemplate> 
       <asp:TextBox ID="uxContentAuthorInput" runat="server" Text='<%# Bind("ContentAuthor") %>' /> 
      </InsertItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="NoteInternal" SortExpression="NoteInternal"> 
      <ItemTemplate> 
       <asp:Label ID="uxNoteInternalDisplayer" runat="server" Text='<%# Bind("NoteInternal") %>' /> 
      </ItemTemplate> 
      <InsertItemTemplate> 
       <asp:TextBox ID="uxNoteInternalInput" runat="server" Text='<%# Bind("NoteInternal") %>' /> 
      </InsertItemTemplate> 
     </asp:TemplateField> 
     <asp:CommandField ShowInsertButton="True" /> 
    </Fields> 
</asp:DetailsView> 

code-behind:

protected void uxInsertAuthorInput_ItemInserted(object sender, DetailsViewInsertedEventArgs e) 
{ 
    String FirstName = e.Values["FirstName"].ToString(); 
    String LastName = e.Values["LastName"].ToString(); 
    uxMessageDisplayer.Text = string.Format("Author: {0} {1} has been added.", FirstName, LastName); 

    // problem is here: 
    Label myAllert = (Label)uxInsertAuthorInput.FindControl("uxAllert"); 
    myAllert.Text = "TEST"; 
} 

Répondre

1

vous devez utiliser ItemUpdated cas de detailsview plutôt que ItemInserted événement

itemUpdated: Se produit quand un bouton de mise à jour à l'intérieur un contrôle DetailsView est cliqué, mais après l'opération de mise à jour. de here

Je suis sûr que cela va résoudre le problème à 100%

+0

Merci, j'ai trouvé la solution: il travaille avec _ItemCreated aussi merci pour votre aide – GibboK