2008-10-30 9 views
1

je peux télécharger des images à la base de données en utilisant linq et le contrôle listview lors du référencement de la méthode e.Values ​​pour le ListViewInsertEventArgs, mais ? il n'y a pas cette méthode dans les ListViewEditEventArgs, que puis-je utiliser pour obtenir les mêmes résultatsQue dois-je utiliser au lieu de e.Values.add (... pour le ListViewEditEventArgs de télécharger une image

ici est mon code d'insertion:

ProjectPhotosList_ItemInserting protected void (object sender, ListViewInsertEventArgs e)

{

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

Étiquette 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"; 
    } 
} 

Répondre

0

ok donc j'ai résolu le problème! Je devais aller à ce sujet un peu d'une manière différente:

c'est le code important:

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

c'est juste 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 cette base de données. Voici donc le code complet:

ProjectPhotosList_ItemUpdating protected void (object sender, ListViewUpdateEventArgs e)

{

FileUpload myFile = (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(); 
    } 
Questions connexes