Que dois-je utiliser à la place de e.Values.add (… pour que ListViewEditEventArgs télécharge une image
-
05-07-2019 - |
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";
}
}
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();
}