Téléchargement du fichier de contrôle HasFile toujours faux, le nom est toujours une Chaîne Vide, pas de panneau de mise à jour utilisé

J'ai un Affichage des Détails qui a un champ d'envoi de fichier en elle. Quand j'ai remplissez les informations et télécharger un fichier (j'ai essayé plusieurs fichiers allant de 9k à 6,8 MO) toutes les informations (champs de texte) soumettre amende, mais le fichier téléchargé est toujours retourner un faux lorsque je vérifie le HasFile et renvoie toujours une Chaîne.Vide lorsque je vérifie le nom du fichier.

Je fais quelque chose de mal? La vue détails de l'est dans un Panneau et Pas un Panneau de mise à Jour

    <asp:Panel ID="pnlUpdate" runat="server"
        Visible="false">
        <h4 runat="server" id="h2SubCaption">Person Details</h4>
        <asp:DetailsView ID="dvAssignment" 
            runat="server" 
            AutoGenerateRows="false" 
            Width="100%"
            SkinID="SampleDetailsView" 
            CssSelectorClass="PrettyDetailsView"
            DataKeyNames="guidMemberId"
            DefaultMode="Edit"
            OnItemUpdating="dvAssignment_ItemUpdating" 
            OnModeChanging="dvAssignment_ModeChanging"
            AutoGenerateEditButton="True" >  
<Fields>   
<asp:TemplateField HeaderText="Nomination Letter">
                        <EditItemTemplate>
                            <asp:FileUpload runat="server" ID="fileuploadNomination" />
                        </EditItemTemplate>
                    </asp:TemplateField> .....

Code Derrière:

        FileUpload _nomination = (FileUpload)dv.FindControl("fileuploadNomination");
    byte[] nominationByte = null;
    if (_nomination.FileName != string.Empty)
        nominationByte = _nomination.FileBytes;
    //if(_nomination.HasFile)
    //nominationByte = _nomination.FileBytes;

MODIFIER
J'ai ajouté un Page_Load appel et il semble que si la page est une publication lorsque je clique sur la génération Automatique Bouton de mise à Jour pour le contrôle DetailsView. Cette publication est probablement l'effacement de mon FileUpload champ. Des idées sur comment la contourner?

Edit #2 je viens de mettre un panneau de mise à jour autour de la DetailsView et définir la publication de déclencher le contrôle DetailsView (voir ci-dessous) et il ne fonctionne toujours pas, il semble se dégager le contrôle de téléchargement avant de l'envoyer.

<asp:UpdatePanel ID="updatePnl" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:Panel ID="pnlUpdate" runat="server"
            Visible="false">
            <h4 runat="server" id="h2SubCaption">Person Details</h4>
            <asp:DetailsView ID="dvAssignment" 
                runat="server" 
                AutoGenerateRows="false" 
                Width="100%"
                SkinID="SampleDetailsView" 
                CssSelectorClass="PrettyDetailsView"
                DataKeyNames="guidMemberId"
                DefaultMode="Edit"
                OnItemUpdating="dvAssignment_ItemUpdating" 
                OnModeChanging="dvAssignment_ModeChanging"
                AutoGenerateEditButton="True" >
                <FieldHeaderStyle Font-Bold="True" Width="150px" />
                <Fields>

                            <asp:FileUpload runat="server" ID="fileuploadNomination" />
                        </EditItemTemplate>
                    </asp:TemplateField>
 </Fields>
                </asp:DetailsView >       
            </asp:Panel>
         </ContentTemplate>
        <Triggers>
            <asp:PostBackTrigger ControlID="dvAssignment" /> 
        </Triggers>
    </asp:UpdatePanel>

Gridview Code comme demandé

 <asp:GridView ID="gvQuality" 
        runat="server" 
        AutoGenerateColumns="False"
        Width="100%"
        DataKeyNames="guidMemberId"
        CssSelectorClass="PrettyGridView"
        SkinID="SampleGridView"
        OnSelectedIndexChanged="gvQuality_SelectedIndexChanged" 
        onrowdatabound="gvQuality_RowDataBound">
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                   <asp:LinkButton ID="btnViewDetails" runat="server" Text="Edit" CommandName="Select" />
                                    </ItemTemplate>
            </asp:TemplateField>

quelques champs liés sont après cela, (prénom, nom, etc)

protected void gvQuality_SelectedIndexChanged(object sender, EventArgs e)
{
    Guid guidMemberId = (Guid)gvQuality.SelectedDataKey.Values["guidMemberId"];
    PortalDataContext db = new PortalDataContext(AuthenticatedUser.ConnectionString);
    h2SubCaption.InnerText = "Update Person";
    dvAssignment.ChangeMode(DetailsViewMode.Edit);

    dvAssignment.DataSource = LINQ Query Here
    dvAssignment.DataBind();
}
  • Êtes-vous reconsolidation du DetailsView sur chaque publication?
  • Je ne suis que la liaison de la DetailsView sur le SelectedIndexChanged de la Gridview. Le contrôle Gridview a un lien d'édition, ce qui déclenche l'DetailsView de lier et de devenir visible.
  • Je suis en train de faire la même chose dans un de mes projet et j'ai un imagebutton qui déclenche le téléchargement je ne vois pas dans votre code et mon bouton de CausesValidation est définie sur false, vous ne savez pas si il est importan bien.
  • Je suis en train d'utiliser le construit en lien de mise à Jour pour soumettre au contrôle DetailsView
  • j'étais résolu le même problème à l'aide de lien ci-dessous codeproject.com/useritems/simpleajaxupload.asp
InformationsquelleAutor EvanGWatkins | 2011-11-18