Что мне использовать вместо e.Values.add(... для ListViewEditEventArgs для загрузки изображения
-
05-07-2019 - |
Вопрос
я могу загружать изображения в базу данных с помощью linq и элемента управления listview при обращении к методу e.Values для ListViewInsertEventArgs, но в ListViewEditEventArgs такого метода нет, так что я могу использовать для достижения тех же результатов?
вот мой код для вставки:
защищенный недействительный проект photoslist_iteminserting(отправитель объекта, ListViewInsertEventArgs e)
{
Файловая загрузка верхнего изображения = (FileUpload)ProjectPhotosList.insertItem.FindControl("Верхнее изображение");
Ярлык fileuploadlbl = (Ярлык)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";
}
}
Решение
итак, я решил проблему!Мне просто пришлось подойти к этому немного по-другому:
это важный код:
int mykey = int.Parse(ProjectPhotosList.DataKeys[например,ItemIndex].Value.toString());
это всего лишь простой способ получить значение primarykey выбранной строки.Я нашел сообщение о загрузке PDF-файлов в базу данных и решил основать на этом остальной свой код.Итак, вот полный код:
защищенный недействительный проект photoslist_itemupdating(отправитель объекта, параметры ListViewUpdateEventArgs e)
{
Загружаемый файл myFile = (Загружаемый файл)ProjectPhotosList.EditItem.FindControl("Загружаемое изображение");
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();
}