ماذا أستخدم بدلاً من e.Values.add(... لـ ListViewEditEventArgs لتحميل صورة

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

سؤال

يمكنني تحميل الصور إلى قاعدة البيانات باستخدام linq وعنصر تحكم listview عند الرجوع إلى طريقة e.Values ​​لـ ListViewInsertEventArgs، ولكن لا يوجد مثل هذا الأسلوب في ListViewEditEventArgs، فما الذي يمكنني استخدامه لتحقيق نفس النتائج؟

هنا هو رمز الإدراج الخاص بي:

ProjectPhotosList_ItemInserting باطلة محمية (مرسل الكائن، ListViewInsertEventArgs e)

{

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

تسمية 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";
    }
}
هل كانت مفيدة؟

المحلول

حسنًا لقد قمت بحل المشكلة!كان علي فقط أن أتعامل مع الأمر بطريقة مختلفة قليلاً:

هذا هو الكود المهم:

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

إنها مجرد طريقة بسيطة للحصول على قيمة المفتاح الأساسي للصف المحدد.لقد وجدت منشورًا حول تحميل ملفات pdf إلى قاعدة بيانات وقررت أن أبني بقية الكود الخاص بي على ذلك.إذن هنا الكود الكامل:

ProjectPhotosList_ItemUpdating باطلة محمية (مرسل الكائن، 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();
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top