IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

AJAX toolkit asyncfileupload + updatepanel avec formview : mettre a jour un champs apres upload ?


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut AJAX toolkit asyncfileupload + updatepanel avec formview : mettre a jour un champs apres upload ?
    Bonjour à tous,

    Je suis actuellement en train de me casser les dents sur AJAX & cie
    Je suis face à un probleme :
    Voici le contexte :

    1) J'ai un objectdatasource relié à un formview.
    2) Le formview est lui meme dans un updatepanel afin de pouvoir réaliser des ajouts façon AJAX
    Le formview est simple, il expose trois champs :
    - Titre
    - FileName
    - FileSize
    3) J'ai un asyncfileupload (du AJAX Control toolkit) qui se balade ou on veut (pour le moment je l'ai mis au dessus de mon formview hors de l'updatepanel) peut importe son emplacement.

    la séquence que je cherche à réaliser est la suivante :
    1) L'utilisateur envoie un fichier via le asyncfileupload
    2) Lorsque l'upload est traité (evenement UploadedCompleted du asyncfileupload) je récupere le filename et le filesize du fichier envoyé
    3) Je met à jour les champs de mon formview (qui est en mode Insert) et j'injecte le filename et le filesize dans les champs.

    Grosso modo, j'aimerai préremplir les champs de mon formview à partir de données envoyées via l'asyncfileupload, le tout en AJAX.

    J'ai bien réussi à le faire en mode normal (sans ajax), mais là avec l'asynchrone je perd un peu les pedales...
    Auriez vous une idée svp ?

    Voici le code de l'evenement de l'upload completed
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    If AsyncFileUpload1.HasFile Then
                AsyncFileUpload1.SaveAs(Server.MapPath("Upload/" & AsyncFileUpload1.FileName))
                Dim ttFName As TextBox = CType(FormView1.FindControl("FilenameTextBox"), TextBox)
                Dim ttFsize As TextBox = CType(FormView1.FindControl("FileSizeTextBox"), TextBox)
                'UpdatePanel1.Update()
                ttFName.Text = AsyncFileUpload1.FileName
                Dim fi As New IO.FileInfo(Server.MapPath("Upload/" & AsyncFileUpload1.FileName))
                ttFsize.Text = fi.Length.ToString
                'UpdatePanel1.Update()
            End If

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    J'ai fini par trouver mon bonheur ^^

    Le code suivant permet ceci :
    Vous avez un repository permettant les opérations de base (insertion, update, delete et listage d'entrées dans une base) (j'ai volontairement zappé la partie BLL pour ceux qui se posent la question car c'est pour le test)
    Donc à partir de là on peut inserer des lignes dans une table composée comme suit :
    ID, Titre, Filename, FileSize

    Le but est (en séquence) :
    1) Uploader une image
    2) Après upload, coté serveur, on extrait le nom du fichier, et son poids
    3) on pré remplit le formulaire qui permet d'ajouter les entrées
    4) l'utilisateur complète le formulaire et insère son enregistrement
    Le tout en AJAX !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
     <div>
            <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true">
            </asp:ScriptManager>
     
            <asp:UpdateProgress ID="UpdateProgress1" runat="server">
            <ProgressTemplate>
            <div>
                En cours.....
            </div>
            </ProgressTemplate>
            </asp:UpdateProgress>
     
            <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DeleteMethod="Delete" InsertMethod="Create" OldValuesParameterFormatString="{0}" SelectMethod="GetList" TypeName="TestASPSimple.EntreesRepository" UpdateMethod="Update">
                <DeleteParameters>
                    <asp:Parameter Name="ID" Type="Int32" />
                </DeleteParameters>
                <UpdateParameters>
                    <asp:Parameter Name="Id" Type="String" />
                    <asp:Parameter Name="Titre" Type="String" />
                    <asp:Parameter Name="Image" Type="String" />
                    <asp:Parameter Name="TailleImage" Type="String" />
                </UpdateParameters>
                <InsertParameters>
                    <asp:Parameter Name="Titre" Type="String" />
                    <asp:Parameter Name="Image" Type="String" />
                    <asp:Parameter Name="TailleImage" Type="String" />
                </InsertParameters>
            </asp:ObjectDataSource>
     
            <h1>Upload asynchrone</h1>
            <cc1:AsyncFileUpload ID="AsyncFileUpload1" runat="server" />
     
            <h1>Formulaire</h1>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
                <ContentTemplate>
     
     
     
                    <asp:FormView ID="FormView1" runat="server" DataSourceID="ObjectDataSource1" DefaultMode="Insert">
                        <InsertItemTemplate>
                            Titre:<asp:TextBox ID="TitreTextBox" runat="server" Text='<%# Bind("Titre") %>' /><br />
                            FileSize:<asp:TextBox ID="FileSizeTextBox" runat="server" Text='<%# Bind("TailleImage") %>' /><br />
                            Filename:<asp:TextBox ID="FilenameTextBox" runat="server" Text='<%# Bind("Image") %>' /><br />
                            <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert" Text="Insérer" />
                            <asp:LinkButton ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Annuler" />
                        </InsertItemTemplate>
                    </asp:FormView>
     
                </ContentTemplate>
            </asp:UpdatePanel>
     
            <a href="Default.aspx">Default.aspx</a>
     
        </div>
     
        </form>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     Protected Sub AsyncFileUpload1_UploadedComplete(ByVal sender As Object, ByVal e As AjaxControlToolkit.AsyncFileUploadEventArgs) Handles AsyncFileUpload1.UploadedComplete
            If AsyncFileUpload1.HasFile Then
                AsyncFileUpload1.SaveAs(Server.MapPath("Upload/" & AsyncFileUpload1.FileName))
                Dim ttFName As TextBox = CType(FormView1.FindControl("FilenameTextBox"), TextBox)
                Dim ttFsize As TextBox = CType(FormView1.FindControl("FileSizeTextBox"), TextBox)
                ScriptManager.RegisterClientScriptBlock(Me, Me.GetType(), "size", "top.$get(""" & ttFsize.ClientID & """).innerText = '" & AsyncFileUpload1.FileBytes.Length.ToString() & "';", True)
                ScriptManager.RegisterClientScriptBlock(Me, Me.GetType(), "name", "top.$get(""" & ttFName.ClientID & """).innerText = '" & AsyncFileUpload1.FileName & "';", True)
            End If
        End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mettre a jour un champ avec date du jour
    Par litlepom dans le forum Développement
    Réponses: 1
    Dernier message: 03/08/2011, 16h40
  2. Mettre a jour un champs de bdd avec un bindingsource
    Par robertopowa dans le forum C#
    Réponses: 1
    Dernier message: 23/04/2010, 18h01
  3. UpdatePanel avec Trigger (Empêcher mise à jour)
    Par Erakis dans le forum ASP.NET
    Réponses: 7
    Dernier message: 21/01/2010, 17h50
  4. permettre de mettre a jour des champs null
    Par alexkickstand dans le forum VBA Access
    Réponses: 1
    Dernier message: 23/08/2007, 20h37
  5. mettre a jour un champ caché d'une fenetre parente
    Par le-stagiaire dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2005, 15h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo