Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# asp.net通过ListView控件将图像插入数据库_C#_Asp.net_Listview - Fatal编程技术网

C# asp.net通过ListView控件将图像插入数据库

C# asp.net通过ListView控件将图像插入数据库,c#,asp.net,listview,C#,Asp.net,Listview,我可以将图像插入数据库或在图像控件中显示它们,等等,但我希望通过ListView将它们插入数据库。我部分地做到了这一点。在插入新项目期间,我通过文件上载控件“FileUploadMedical”浏览图像,并通过“MedicalUploadButton”将其插入数据库(您可以在下面看到其代码)。我想去掉MedicalUploadButton,使用默认的ListView“插入”和“编辑”按钮。我可能应该保持“FileUpload”控件以浏览图像。下面是我迄今为止所做的 通常我通过ImageHandl

我可以将图像插入数据库或在图像控件中显示它们,等等,但我希望通过ListView将它们插入数据库。我部分地做到了这一点。在插入新项目期间,我通过文件上载控件“FileUploadMedical”浏览图像,并通过“MedicalUploadButton”将其插入数据库(您可以在下面看到其代码)。我想去掉MedicalUploadButton,使用默认的ListView“插入”和“编辑”按钮。我可能应该保持“FileUpload”控件以浏览图像。下面是我迄今为止所做的

通常我通过ImageHandler.ashx在listview中显示图像,并在ItemTemplate中显示图像,如下所示

   <ItemTemplate >
         <tr style="">
             <td>
                 <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="Delete" />
                 <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" />
             </td>
             <td>
                <asp:Image ID="MedicalImage" runat="server" ImageUrl='<%# "~/Handlers/ImageHandler.ashx?ID="+Eval("MedicalID")+"&Entity=Medical"%>'/>
            </td>
         </tr>
    </ItemTemplate>
它实际上非常简单,工作非常完美,但在InsertItemTemplate或EditItemTemplate中,我不想使用自定义MedicalUpload按钮单击功能,但我只想使用“MedicalUpload”文件上载控件,浏览图像,然后单击插入或编辑,图像应插入数据库


因此,更准确地说,我想删除MedicalUploadButton\u Click功能,并使用listview的默认“插入”和“编辑”按钮来插入图像。

经过一些研究,我解决了这个问题。首先,我们必须向listview添加以下事件

        <InsertItemTemplate>
        <tr style="">
            <td>
                <asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="Insert" />
                <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Clear" />
            </td>
            <td>
                <asp:FileUpload ID="FileUploadMedical" runat="server" />
                <asp:Button ID="MedicalUploadButton" runat="server" text="Hoch Laden" OnClick="MedicalUploadButton_Click"/>
            </td>
        </tr>
    </InsertItemTemplate>
OnItemUpdating="DistrictList_ItemUpdating" OnItemInserted="DistrictList_ItemInserted"
 string disName = e.NewValues["DistrictName"].ToString(); 
在DistrictList_ItemUpdate的代码隐藏处(对于编辑命令),您可以添加以下内容:

        protected void DistrictList_ItemUpdating(object sender, ListViewUpdateEventArgs e)
    {
        FileUpload Fupload = (FileUpload)DistrictList.EditItem.FindControl("FileUploadDistrictEdit");
        if (Fupload.HasFile)
        {
            string FilePath = Fupload.PostedFile.FileName;
            string FileName = Path.GetFileName(FilePath);
            string Ext = Path.GetExtension(FileName);
            string ContentType = String.Empty;



            switch (Ext)
            {
                case ".jpg":
                    ContentType = "Image/jpg";
                    break;
                case ".jpeg":
                    ContentType = "Image/jpeg";
                    break;
                case ".png":
                    ContentType = "Image/png";
                    break;
                case ".bmp":
                    ContentType = "Image/bmp";
                    break;
            }

            if (ContentType != String.Empty)
            {
                Stream FileStream = Fupload.PostedFile.InputStream;
                BinaryReader FileReader = new BinaryReader(FileStream);
                Byte[] bytes = FileReader.ReadBytes((Int32)FileStream.Length);

                string disName = e.NewValues["DistrictName"].ToString(); 

                //insert the file into database
                using (Entity.MedicalEntities emp = new Entity.MedicalEntities())
                {

                    Entity.District districts = (from h in emp.Districts where h.DistrictName == disName select h).First();
                    districts.DistrictImage = bytes;
                    emp.SaveChanges();

                }
            }
        }
    }
对于我来说,更新部分最重要的部分是以下几行。获取listview编辑行的DistrictName值

        <InsertItemTemplate>
        <tr style="">
            <td>
                <asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="Insert" />
                <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Clear" />
            </td>
            <td>
                <asp:FileUpload ID="FileUploadMedical" runat="server" />
                <asp:Button ID="MedicalUploadButton" runat="server" text="Hoch Laden" OnClick="MedicalUploadButton_Click"/>
            </td>
        </tr>
    </InsertItemTemplate>
OnItemUpdating="DistrictList_ItemUpdating" OnItemInserted="DistrictList_ItemInserted"
 string disName = e.NewValues["DistrictName"].ToString(); 
对于Insert命令,可以添加以下内容。我对它使用“插入”命令。获取新添加的“District”记录的“DistrictName”,并在linq的Where claus处使用它

protected void DistrictList_ItemInserted(object sender, ListViewInsertedEventArgs e)
    {
        FileUpload Fupload = (FileUpload)DistrictList.InsertItem.FindControl("FileUploadDistrictInsert");
        if (Fupload.HasFile)
        {
            string FilePath = Fupload.PostedFile.FileName;
            string FileName = Path.GetFileName(FilePath);
            string Ext = Path.GetExtension(FileName);
            string ContentType = String.Empty;



            switch (Ext)
            {
                case ".jpg":
                    ContentType = "Image/jpg";
                    break;
                case ".JPG":
                    ContentType = "Image/jpg";
                    break;
                case ".jpeg":
                    ContentType = "Image/jpeg";
                    break;
                case ".JPEG":
                    ContentType = "Image/jpeg";
                    break;
                case ".png":
                    ContentType = "Image/png";
                    break;
                case ".PNG":
                    ContentType = "Image/png";
                    break;
                case ".bmp":
                    ContentType = "Image/bmp";
                    break;
                case ".BMP":
                    ContentType = "Image/bmp";
                    break;
            }

            if (ContentType != String.Empty)
            {
                Stream FileStream = Fupload.PostedFile.InputStream;
                BinaryReader FileReader = new BinaryReader(FileStream);
                Byte[] bytes = FileReader.ReadBytes((Int32)FileStream.Length);

                string disID = e.Values["DistrictName"].ToString();

                //insert the file into database
                using (Entity.MedicalEntities emp = new Entity.MedicalEntities())
                {

                    Entity.District districts = (from h in emp.Districts where h.DistrictName == disID select h).First();
                    districts.DistrictImage = bytes;
                    emp.SaveChanges();

                }
            }
        }
    }
对我来说,最重要的部分是下面一行,以获取新创建记录的“DistrictName”

 string disID = e.Values["DistrictName"].ToString();
如果您有任何建议或发现任何缺点,请让我知道