Que dois-je utiliser à la place de e.Values.add (… pour que ListViewEditEventArgs télécharge une image

StackOverflow https://stackoverflow.com/questions/250528

Question

Je peux télécharger des images dans la base de données à l’aide de linq et du contrôle listview lors du référencement de la méthode e.Values ??pour ListViewInsertEventArgs, mais il n’existe aucune méthode de ce type dans ListViewEditEventArgs. Que puis-je utiliser pour obtenir les mêmes résultats?

voici mon code d'insertion:

Void protégé ProjectPhotosList_ItemInserting (expéditeur d'objet, ListViewInsertEventArgs e)

{

FileUpload uplImage = (FileUpload) ProjectPhotosList.InsertItem.FindControl ("uplImage");

Label fileuploadlbl = (Label) ProjectPhotosList.InsertItem.FindControl (" fileuploadlbl ");

    byte[] img = null;
    if (uplImage.HasFile || !uplImage.FileName.ToLower().EndsWith(".jpg"))
    {
        try
        {
            img = new byte[uplImage.PostedFile.ContentLength];
            uplImage.PostedFile.InputStream.Read(img, 0, img.Length);
        }
        catch
        {
            fileuploadlbl.Text = "unable to upload " + uplImage.FileName.ToString();
        }
    }
    if (img == null)
    {
        e.Cancel = true;
        fileuploadlbl.Text = "Please choose a file to upload";
    }

    try
    {
        e.Values.Add("ProjectPhoto", new System.Data.Linq.Binary(img));
        fileuploadlbl.Text = "File Upload Successful";
    }
    catch
    {
        fileuploadlbl.Text = "File Upload Failed, please try again";
    }
}
Était-ce utile?

La solution

ok donc j'ai résolu le problème! Je devais simplement m'y prendre d'une autre manière:

c'est le code important:

int mykey = int.Parse (ProjectPhotosList.DataKeys [e.ItemIndex] .Value.ToString ());

n’est qu’un moyen simple d’obtenir la valeur de la clé primaire de la ligne sélectionnée. J'ai trouvé un article sur le téléchargement de fichiers PDF dans une base de données et j'ai décidé de baser le reste de mon code sur cela. Alors voici le code complet:

Void protégé ProjectPhotosList_ItemUpdating (expéditeur d'objet, ListViewUpdateEventArgs e)

{

FileUpload monFichier = (FileUpload) ProjectPhotosList.EditItem.FindControl ("uploadImage");

    TextBox myCaption = (TextBox)ProjectPhotosList.EditItem.FindControl("ProjectPhotoCaptionTextBox");

    int mykey = int.Parse(ProjectPhotosList.DataKeys[e.ItemIndex].Value.ToString());

    if (myFile.HasFile)
    {

        //Get the posted file
        Stream fileDataStream = myFile.PostedFile.InputStream;

        //Get length of file
        int fileLength = myFile.PostedFile.ContentLength;

        //Create a byte array with file length
        byte[] fileData = new byte[fileLength];

        //Read the stream into the byte array
        fileDataStream.Read(fileData, 0, fileLength);

        //get the file type
        string fileType = myFile.PostedFile.ContentType;

        //Open Connection
        PHJamesDataContext db = new PHJamesDataContext();
        //Find the Right Row
        PHJProjectPhoto Newphoto = (from p in db.PHJProjectPhotos
                                    where p.ProjectPhotoId == mykey
                                    select p).Single<PHJProjectPhoto>();


        Newphoto.ProjectPhoto = fileData;

        db.SubmitChanges();
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top