我用什么代替e.Values.add(..用于ListViewEditEventArgs上传图像

本文关键字:用于 ListViewEditEventArgs 图像 add Values 什么 | 更新日期: 2023-09-27 17:47:46

当引用ListViewInsertEventArgs的e.Values方法时,我可以使用linq和listview控件将图像上传到数据库,但ListViewEditEventArgs中没有这样的方法,那么我可以使用什么来获得相同的结果呢?

这是我的插入代码:

protected void ProjectPhotosList_ItemInserting(对象发送方,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";
    }
}

我用什么代替e.Values.add(..用于ListViewEditEventArgs上传图像

好的,所以我已经解决了这个问题!我只是不得不采取一种不同的方式:

这是重要的代码:

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

这只是获取所选行的primarykey值的一种简单方法。我发现了一篇关于将pdf上传到数据库的帖子,并决定将我的其余代码建立在这个基础上。所以这里的完整代码:

protected void 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();
    }