I have outsourced a small task to a developer. The task was to
- Amend an existing form to allow the user to upload an image to a directory
- Record the FULL path in the database
- Ability to edit the record and upload a new image.
When I tried inserting a new record it would'nt upload the image. It did add the filename to the database (although it is meant to insert the entire full root path to the database).
It would work perfectly when I edited a record (i.e. upload the image and put the full path into the database).
He tested it on multiple computers and I have tested it on multiple computers. I have tested it on multiple versions of Visual Studio. He has uploaded it to a live server and I have tested it on the live server and I can see that it works. Neither one of use are getting errors. It is just not working on my computers.
I am very new to Visual Studio and ASP.NET. Am I missing something? Is there a reason why it would work for perfectly for him and not me?
Maybe a setting or something?
Lee
Just in case you are interested in the code
InsertControl.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Control-Hardware-Insert.ascx.cs" Inherits="WebUserControl" %><asp:SqlDataSource ID="SqlDataSource1" runat="server" OnSelecting="SqlDataSource1_Selecting" OnUpdating="SqlDataSource1_Updating" ConnectionString="<%$ ConnectionStrings:ConnectionStringGeoQ %>" DeleteCommand="DELETE FROM [Hardware] WHERE [HardwareID] = @HardwareID" InsertCommand="INSERT INTO [Hardware] ([HardwareName], [NSN], [AssetNo], [SerialNo], [ModelNo], [LastStockCheck], [StockCheckFreqDays], [DisposedOfDate], [DisposedBy], [WarrantyExpDate], [SustainedBy], [OwnedBy], [IsVirtualMachine], [NonTechFreqDays], [LastNonTechDate], [NonTechInstructions], [SignedOutBy], [Location], [LoanedTo], [LoanedToLocation], [ExpectedLoanReturnDate], [ServiceabilityID], [KitID], [DateAdded], [ImagePath]) VALUES (@HardwareName, @NSN, @AssetNo, @SerialNo, @ModelNo, @LastStockCheck, @StockCheckFreqDays, @DisposedOfDate, @DisposedBy, @WarrantyExpDate, @SustainedBy, @OwnedBy, @IsVirtualMachine, @NonTechFreqDays, @LastNonTechDate, @NonTechInstructions, @SignedOutBy, @Location, @LoanedTo, @LoanedToLocation, @ExpectedLoanReturnDate, @ServiceabilityID, @KitID, @DateAdded, @ImagePath)" SelectCommand="SELECT * FROM [Hardware]" UpdateCommand="UPDATE [Hardware] SET [ImagePath] = @ImagePath WHERE [HardwareID] = @HardwareID"><DeleteParameters><asp:Parameter Name="HardwareID" Type="Int32" /></DeleteParameters><InsertParameters><asp:Parameter Name="HardwareName" Type="String" /><asp:Parameter Name="NSN" Type="String" /><asp:Parameter Name="AssetNo" Type="String" /><asp:Parameter Name="SerialNo" Type="String" /><asp:Parameter Name="ModelNo" Type="String" /><asp:Parameter DbType="Date" Name="LastStockCheck" /><asp:Parameter Name="StockCheckFreqDays" Type="Int32" /><asp:Parameter DbType="Date" Name="DisposedOfDate" /><asp:Parameter Name="DisposedBy" Type="Int32" /><asp:Parameter DbType="Date" Name="WarrantyExpDate" /><asp:Parameter Name="SustainedBy" Type="Int32" /><asp:Parameter Name="OwnedBy" Type="Int32" /><asp:Parameter Name="IsVirtualMachine" Type="Boolean" /><asp:Parameter Name="NonTechFreqDays" Type="Int32" /><asp:Parameter DbType="Date" Name="LastNonTechDate" /><asp:Parameter Name="NonTechInstructions" Type="String" /><asp:Parameter Name="SignedOutBy" Type="Int32" /><asp:Parameter Name="Location" Type="String" /><asp:Parameter Name="LoanedTo" Type="Int32" /><asp:Parameter Name="LoanedToLocation" Type="String" /><asp:Parameter DbType="Date" Name="ExpectedLoanReturnDate" /><asp:Parameter Name="ServiceabilityID" Type="Int32" /><asp:Parameter Name="KitID" Type="Int32" /><asp:Parameter DbType="Date" Name="DateAdded" /><asp:Parameter Name="ImagePath" Type="String" /></InsertParameters><UpdateParameters><asp:Parameter Name="HardwareName" Type="String" /><asp:Parameter Name="NSN" Type="String" /><asp:Parameter Name="AssetNo" Type="String" /><asp:Parameter Name="SerialNo" Type="String" /><asp:Parameter Name="ModelNo" Type="String" /><asp:Parameter DbType="Date" Name="LastStockCheck" /><asp:Parameter Name="StockCheckFreqDays" Type="Int32" /><asp:Parameter DbType="Date" Name="DisposedOfDate" /><asp:Parameter Name="DisposedBy" Type="Int32" /><asp:Parameter DbType="Date" Name="WarrantyExpDate" /><asp:Parameter Name="SustainedBy" Type="Int32" /><asp:Parameter Name="OwnedBy" Type="Int32" /><asp:Parameter Name="IsVirtualMachine" Type="Boolean" /><asp:Parameter Name="NonTechFreqDays" Type="Int32" /><asp:Parameter DbType="Date" Name="LastNonTechDate" /><asp:Parameter Name="NonTechInstructions" Type="String" /><asp:Parameter Name="SignedOutBy" Type="Int32" /><asp:Parameter Name="Location" Type="String" /><asp:Parameter Name="LoanedTo" Type="Int32" /><asp:Parameter Name="LoanedToLocation" Type="String" /><asp:Parameter DbType="Date" Name="ExpectedLoanReturnDate" /><asp:Parameter Name="ServiceabilityID" Type="Int32" /><asp:Parameter Name="KitID" Type="Int32" /><asp:Parameter DbType="Date" Name="DateAdded" /><asp:Parameter Name="ImagePath" Type="String" /><asp:Parameter Name="HardwareID" Type="Int32" /></UpdateParameters></asp:SqlDataSource><asp:ListView ID="ListView1" runat="server" DataKeyNames="HardwareID" DataSourceID="SqlDataSource1" InsertItemPosition="LastItem"><InsertItemTemplate><div style="float:none; display:block" class="span6"><div class="nopad"><table id="HardwareItem" class="table table-bordered span12" style="border-right:solid thin #C4C4C4; margin-bottom:20px;"><thead><tr><th colspan="2" class="span6">Details</th></tr></thead><tbody><tr><td>Hardware Name:</td><td><asp:TextBox ID="HWNameTextBox" runat="server" maxlength="100" Text='<%# Bind("HardwareName") %>' /> </td></tr><tr><td>NSN:</td><td><asp:TextBox ID="NSNTextBox" runat="server" maxlength="50" Text='<%# Bind("NSN") %>' /> </td></tr><tr><td>Asset No:</td><td><asp:TextBox ID="AssetNoTextBox" runat="server" maxlength="50" Text='<%# Bind("AssetNo") %>' /> </td></tr><tr><td>Serial No:</td><td><asp:TextBox ID="SerialNoTextBox" runat="server" maxlength="50" Text='<%# Bind("SerialNo") %>' /> </td></tr><tr><td>Model No:</td><td><asp:TextBox ID="ModelNoTextBox" runat="server" maxlength="50" Text='<%# Bind("ModelNo") %>' /> </td></tr><tr><td>Is This a Virtual Machine:</td><td><asp:CheckBox ID="IsVirtualMachineCheckBox" runat="server" Checked='<%# Bind("IsVirtualMachine") %>' /></td></tr><tr><td>Serviceability:</td><td> <asp:DropDownList ID="DropDownListServiceability" runat="server" OnDataBound="AddNullValueToDropDownList_DataBound" AppendDataBoundItems="true" DataSourceID="ServiceabilityList" DataTextField="ServiceabilityName" DataValueField="ServiceabilityID" SelectedValue='<%# Bind("ServiceabilityID") %>'><asp:listitem value="" text="Select a value"></asp:listitem></asp:DropDownList><asp:SqlDataSource ID="ServiceabilityList" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionStringGeoQ %>" SelectCommand="SELECT * FROM [Serviceability]"></asp:SqlDataSource> </td></tr><tr><td>Kit Name:</td><td><asp:DropDownList ID="DropDownList_Kit" runat="server" OnDataBound="AddNullValueToDropDownList_DataBound" AppendDataBoundItems="true" DataSourceID="KitList" DataTextField="KitName" DataValueField="KitID" SelectedValue='<%# Bind("KitID") %>'><asp:listitem value="" text="Select a value"></asp:listitem></asp:DropDownList><asp:SqlDataSource ID="KitList" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionStringGeoQ %>" SelectCommand="SELECT * FROM [Kit]"></asp:SqlDataSource> </td></tr><tr><td>Image:</td><td><asp:FileUpload ID="ImageFileUpload" AllowMultiple="false" ClientIDMode="Static" runat="server" /><asp:HiddenField ID="ImagePathHdn" ClientIDMode="Static" runat="server" Value='<%# Bind("ImagePath") %>' /> <asp:HiddenField ID="OldHardwareId" ClientIDMode="Static" runat="server" /> <asp:HiddenField ID="ImageFolderPath" ClientIDMode="Static" Value='<%# ResolveUrl("~" + ConfigurationManager.AppSettings["ImagePath"]) %>' runat="server" /> <div id="uploadPreview"></div></td></tr></tbody></table></div><div class="nopad"><table id="Governance" class="table table-bordered span12" style="border-right:solid thin #C4C4C4; margin-bottom:20px;"><thead><tr><th colspan="2" class="span6">Governance</th></tr></thead><tbody><tr><td class="span6">Last Stock Check Date:</td><td class="span6"><asp:TextBox ID="LastStockCheck_aspnetdatepicker" runat="server" Text='<%# Bind("LastStockCheck", "{0:dd MMM yyyy}") %>' /> </td></tr><tr><td>Stock Check Frequency (Days):</td><td><asp:TextBox ID="StockCheckFreqDaysTextBox" runat="server" Text='<%# Bind("StockCheckFreqDays") %>' /> </td></tr><tr><td>Disposed Of Date:</td><td><asp:TextBox ID="DisposedOfDate_aspnetdatepicker" runat="server" Text='<%# Bind("DisposedOfDate", "{0:dd MMM yyyy}") %>' /> </td></tr><tr><td>Disposed By:</td><td><asp:TextBox ID="DisposedByTextBox" runat="server" Text='<%# Bind("DisposedBy") %>' /> </td></tr><tr><td>Warranty Expiry Date:</td><td><asp:TextBox ID="WarrantyExpDate_aspnetdatepicker" runat="server" Text='<%# Bind("WarrantyExpDate", "{0:dd MMM yyyy}") %>' /> </td></tr><tr><td>Non-Tech Frequency (Days):</td><td><asp:TextBox ID="NonTechFreqDaysTextBox" runat="server" Text='<%# Bind("NonTechFreqDays") %>' /> </td></tr><tr><td>Last Non-Tech Date:</td><td><asp:TextBox ID="LastNonTechDate_aspnetdatepicker" runat="server" Text='<%# Bind("LastNonTechDate", "{0:dd MMM yyyy}") %>' /> </td></tr><tr><td>Non-Tech Instructions:</td><td><asp:TextBox ID="NonTechInstructionstextarea" runat="server" TextMode="MultiLine" Text='<%# Bind("NonTechInstructions") %>'></asp:TextBox></td></tr></tbody></table></div><div class="nopad"><table id="Ownership" class="table table-bordered span12" style="border-right:solid thin #C4C4C4; margin-bottom:20px;"><thead><tr><th colspan="2" class="span6">Ownership</th></tr></thead><tbody><tr><td class="span6">Sustained By:</td><td class="span6"><asp:TextBox ID="SustainedByTextBox" runat="server" Text='<%# Bind("SustainedBy") %>' /> </td></tr><tr><td>Owned By:</td><td><asp:TextBox ID="OwnedByTextBox" runat="server" Text='<%# Bind("OwnedBy") %>' /> </td></tr><tr><td>Signed Out By:</td><td><asp:TextBox ID="SignedOutByTextBox" runat="server" Text='<%# Bind("SignedOutBy") %>' /> </td></tr><tr><td>Location:</td><td><asp:TextBox ID="LocationTextBox" runat="server" maxlength="50" Text='<%# Bind("Location") %>' /> </td></tr><tr><td>Loaned To:</td><td><asp:TextBox ID="LoanedToTextBox" runat="server" Text='<%# Bind("LoanedTo") %>' /> </td></tr><tr><td>Loaned To Location:</td><td><asp:TextBox ID="LoanedToLocationTextBox" runat="server" maxlength="50" Text='<%# Bind("LoanedToLocation") %>' /> </td></tr><tr><td>Expected Loan Return Date:</td><td><asp:TextBox ID="ExpectedLoanReturnDate_aspnetdatepicker" runat="server" Text='<%# Bind("ExpectedLoanReturnDate", "{0:dd MMM yyyy}") %>' /> </td></tr></tbody></table></div><div><asp:LinkButton ID="InsertButton" runat="server" CommandName="Insert" CssClass="btn marginR10 marginB10" Text="Insert" /></div><br /><br /><br /><br /></div></InsertItemTemplate><ItemTemplate></ItemTemplate><AlternatingItemTemplate></AlternatingItemTemplate><EditItemTemplate></EditItemTemplate><EmptyDataTemplate><span>No data was returned.</span></EmptyDataTemplate><LayoutTemplate><div ID="itemPlaceholderContainer" runat="server" style=""><span runat="server" id="itemPlaceholder" /></div><div style=""></div></LayoutTemplate><SelectedItemTemplate></SelectedItemTemplate></asp:ListView>
InsertControl.ascx.cs
using System; using System.Configuration; using System.Data.SqlClient; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Web.UI.WebControls; public partial class WebUserControl : System.Web.UI.UserControl { protected string path = ConfigurationManager.AppSettings["ImagePath"]; protected string[] allowedExtenstions = new string[] { ".png", ".jpg", ".jpeg", ".gif" }; protected void Page_Load(object sender, EventArgs e) { } protected void AddNullValueToDropDownList_DataBound(object sender, EventArgs e) { DropDownList dropdownlist = (DropDownList)sender; if (dropdownlist.SelectedValue == string.Empty) { dropdownlist.Items[0].Enabled = true; } } protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e) { try { var flpImage = (FileUpload)ListView1.InsertItem.FindControl("ImageFileUpload"); var flpImageHdn = (HiddenField)ListView1.InsertItem.FindControl("ImagePathHdn"); //var oldHardwareId = (HiddenField)ListView1.InsertItem.FindControl("OldHardwareId"); string Connection = ConfigurationManager.ConnectionStrings["ConnectionStringGeoQ"].ConnectionString; SqlConnection db = new SqlConnection(Connection); string sql = "select top 1 HardwareID from [GeoQ].[dbo].[Hardware] where ImagePath like '%" + flpImage.FileName + "%' order by HardwareID desc"; int lastenteredId = 0; using (var command = new SqlCommand(sql, db)) { db.Open(); using (var reader = command.ExecuteReader()) { while (reader.Read()) { lastenteredId = reader.GetInt32(0); } } } var physicalPath = Server.MapPath("~" + path); if (flpImage.HasFile) { var fullImagePath = physicalPath + lastenteredId + Path.GetExtension(flpImage.FileName); flpImage.SaveAs(fullImagePath); SqlDataSource1.Update(); if (allowedExtenstions.Contains(Path.GetExtension(flpImage.FileName).ToLower())) { CreateThumbnail(fullImagePath, Convert.ToInt32(ConfigurationManager.AppSettings["allowedWidth"]), Convert.ToInt32(ConfigurationManager.AppSettings["allowedHeight"])); } } else if (!string.IsNullOrEmpty(flpImageHdn.Value)) { var oldImage = Server.MapPath("~" + flpImageHdn.Value); var fullImagePath = physicalPath + lastenteredId + Path.GetExtension(flpImageHdn.Value); File.Copy(oldImage, fullImagePath); SqlDataSource1.Update(); if (allowedExtenstions.Contains(Path.GetExtension(flpImageHdn.Value).ToLower())) { CreateThumbnail(fullImagePath, Convert.ToInt32(ConfigurationManager.AppSettings["allowedWidth"]), Convert.ToInt32(ConfigurationManager.AppSettings["allowedHeight"])); } } } catch (Exception ex) { //throw; } } protected void SqlDataSource1_Updating(object sender, SqlDataSourceCommandEventArgs e) { var flpImage = (FileUpload)ListView1.InsertItem.FindControl("ImageFileUpload"); var flpImageHdn = (HiddenField)ListView1.InsertItem.FindControl("ImagePathHdn"); string Connection = ConfigurationManager.ConnectionStrings["ConnectionStringGeoQ"].ConnectionString; SqlConnection db = new SqlConnection(Connection); string sql = "select top 1 HardwareID from [GeoQ].[dbo].[Hardware] where ImagePath like '%" + flpImage.FileName + "%' order by HardwareID desc"; int lastenteredId = 0; using (var command = new SqlCommand(sql, db)) { db.Open(); using (var reader = command.ExecuteReader()) { while (reader.Read()) { lastenteredId = reader.GetInt32(0); } } } e.Command.Parameters["@HardwareID"].Value = lastenteredId; if (flpImage.HasFile) { e.Command.Parameters["@ImagePath"].Value = path + lastenteredId + Path.GetExtension(flpImage.FileName); } else { e.Command.Parameters["@ImagePath"].Value = path + lastenteredId + Path.GetExtension(flpImageHdn.Value); } } public static void CreateThumbnail(string lcFilename, int lnWidth, int lnHeight) { System.Drawing.Bitmap bmpOut = null; try { Bitmap loBMP = new Bitmap(lcFilename); ImageFormat loFormat = loBMP.RawFormat; decimal lnRatio; int lnNewWidth = 0; int lnNewHeight = 0; if (loBMP.Width < lnWidth && loBMP.Height < lnHeight) return; if (loBMP.Width > loBMP.Height) { lnRatio = (decimal)lnWidth / loBMP.Width; lnNewWidth = lnWidth; decimal lnTemp = loBMP.Height * lnRatio; lnNewHeight = (int)lnTemp; } else { lnRatio = (decimal)lnHeight / loBMP.Height; lnNewHeight = lnHeight; decimal lnTemp = loBMP.Width * lnRatio; lnNewWidth = (int)lnTemp; } bmpOut = new Bitmap(lnNewWidth, lnNewHeight); Graphics g = Graphics.FromImage(bmpOut); g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; g.FillRectangle(Brushes.White, 0, 0, lnNewWidth, lnNewHeight); g.DrawImage(loBMP, 0, 0, lnNewWidth, lnNewHeight); loBMP.Dispose(); } catch { return; } bmpOut.Save(lcFilename); } }
EditControl.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Control-Hardware-Edit.ascx.cs" Inherits="Controls_WebUserControl" %><div><asp:SqlDataSource ID="SqlDataSourceHardware" runat="server" OnUpdating="SqlDataSourceHardware_Updating" EnableCaching="False" ConnectionString="<%$ ConnectionStrings:ConnectionStringGeoQ %>" DeleteCommand="DELETE FROM [Hardware] WHERE [HardwareID] = @HardwareID" InsertCommand="INSERT INTO [Hardware] ([HardwareName], [NSN], [AssetNo], [SerialNo], [ModelNo], [LastStockCheck], [StockCheckFreqDays], [DisposedOfDate], [DisposedBy], [WarrantyExpDate], [SustainedBy], [OwnedBy], [IsVirtualMachine], [NonTechFreqDays], [LastNonTechDate], [NonTechInstructions], [SignedOutBy], [Location], [LoanedTo], [LoanedToLocation], [ExpectedLoanReturnDate], [ServiceabilityID], [KitID], [ImagePath]) VALUES (@HardwareName, @NSN, @AssetNo, @SerialNo, @ModelNo, @LastStockCheck, @StockCheckFreqDays, @DisposedOfDate, @DisposedBy, @WarrantyExpDate, @SustainedBy, @OwnedBy, @IsVirtualMachine, @NonTechFreqDays, @LastNonTechDate, @NonTechInstructions, @SignedOutBy, @Location, @LoanedTo, @LoanedToLocation, @ExpectedLoanReturnDate, @ServiceabilityID, @KitID, @ImagePath)" UpdateCommand="UPDATE [Hardware] SET [HardwareName] = @HardwareName, [NSN] = @NSN, [AssetNo] = @AssetNo, [SerialNo] = @SerialNo, [ModelNo] = @ModelNo, [LastStockCheck] = @LastStockCheck, [StockCheckFreqDays] = @StockCheckFreqDays, [DisposedOfDate] = @DisposedOfDate, [DisposedBy] = @DisposedBy, [WarrantyExpDate] = @WarrantyExpDate, [SustainedBy] = @SustainedBy, [OwnedBy] = @OwnedBy, [IsVirtualMachine] = @IsVirtualMachine, [NonTechFreqDays] = @NonTechFreqDays, [LastNonTechDate] = @LastNonTechDate, [NonTechInstructions] = @NonTechInstructions, [SignedOutBy] = @SignedOutBy, [Location] = @Location, [LoanedTo] = @LoanedTo, [LoanedToLocation] = @LoanedToLocation, [ExpectedLoanReturnDate] = @ExpectedLoanReturnDate, [ImagePath] = @ImagePath, [ServiceabilityID] = @ServiceabilityID, [KitID] = @KitID WHERE [HardwareID] = @HardwareID"><DeleteParameters><asp:Parameter Name="HardwareID" Type="Int32" /></DeleteParameters><InsertParameters><asp:Parameter Name="HardwareName" Type="String" /><asp:Parameter Name="NSN" Type="String" /><asp:Parameter Name="AssetNo" Type="String" /><asp:Parameter Name="SerialNo" Type="String" /><asp:Parameter Name="ModelNo" Type="String" /><asp:Parameter Name="LastStockCheck" Type="String" /><asp:Parameter Name="StockCheckFreqDays" Type="Int32" /><asp:Parameter DbType="Date" Name="DisposedOfDate" /><asp:Parameter Name="DisposedBy" Type="Int32" /><asp:Parameter DbType="Date" Name="WarrantyExpDate" /><asp:Parameter Name="SustainedBy" Type="Int32" /><asp:Parameter Name="OwnedBy" Type="Int32" /><asp:Parameter Name="IsVirtualMachine" Type="Boolean" /><asp:Parameter Name="NonTechFreqDays" Type="Int32" /><asp:Parameter DbType="Date" Name="LastNonTechDate" /><asp:Parameter Name="NonTechInstructions" Type="String" /><asp:Parameter Name="SignedOutBy" Type="Int32" /><asp:Parameter Name="Location" Type="String" /><asp:Parameter Name="LoanedTo" Type="Int32" /><asp:Parameter Name="LoanedToLocation" Type="String" /><asp:Parameter DbType="Date" Name="ExpectedLoanReturnDate" /><asp:Parameter Name="ServiceabilityID" Type="Int32" /><asp:Parameter Name="KitID" Type="Int32" /><asp:Parameter Name="ImagePath" Type="String" /></InsertParameters><SelectParameters><asp:QueryStringParameter DefaultValue="1" Name="HardwareID" QueryStringField="HardwareID" /></SelectParameters><UpdateParameters><asp:Parameter Name="HardwareName" Type="String" /><asp:Parameter Name="NSN" Type="String" /><asp:Parameter Name="AssetNo" Type="String" /><asp:Parameter Name="SerialNo" Type="String" /><asp:Parameter Name="ModelNo" Type="String" /><asp:Parameter Name="LastStockCheck" Type="String" /><asp:Parameter Name="StockCheckFreqDays" Type="Int32" /><asp:Parameter DbType="Date" Name="DisposedOfDate" /><asp:Parameter Name="DisposedBy" Type="Int32" /><asp:Parameter DbType="Date" Name="WarrantyExpDate" /><asp:Parameter Name="SustainedBy" Type="Int32" /><asp:Parameter Name="OwnedBy" Type="Int32" /><asp:Parameter Name="IsVirtualMachine" Type="Boolean" /><asp:Parameter Name="NonTechFreqDays" Type="Int32" /><asp:Parameter DbType="Date" Name="LastNonTechDate" /><asp:Parameter Name="NonTechInstructions" Type="String" /><asp:Parameter Name="SignedOutBy" Type="Int32" /><asp:Parameter Name="Location" Type="String" /><asp:Parameter Name="LoanedTo" Type="Int32" /><asp:Parameter Name="LoanedToLocation" Type="String" /><asp:Parameter DbType="Date" Name="ExpectedLoanReturnDate" /><asp:Parameter Name="ServiceabilityID" Type="Int32" /><asp:Parameter Name="KitID" Type="Int32" /><asp:Parameter Name="HardwareID" Type="Int32" /><asp:Parameter Name="ImagePath" Type="String" /></UpdateParameters></asp:SqlDataSource><asp:FormView ID="FormView1" runat="server" DataKeyNames="HardwareID" DataSourceID="SqlDataSourceHardware" EmptyDataText="No Information Available<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />"><EditItemTemplate><table id="HardwareItem" class="table table-bordered span12"><thead><tr><th colspan="2" class="span12">Details</th></tr></thead><tbody><tr><td class="span6">GeoQ ID:</td><td class="span6"><asp:Label ID="HardwareIDLabel" runat="server" Text='<%# Eval("HardwareID") %>' /> </td></tr><tr><td>Hardware Name:</td><td><asp:TextBox ID="HardwareNameTextBox" runat="server" maxlength="100" Text='<%# Bind("HardwareName") %>' /> </td></tr><tr><td>NSN:</td><td><asp:TextBox ID="NSNTextBox" runat="server" maxlength="50" Text='<%# Bind("NSN") %>' /> </td></tr><tr><td>Asset No:</td><td><asp:TextBox ID="AssetNoTextBox" runat="server" maxlength="50" Text='<%# Bind("AssetNo") %>' /> </td></tr><tr><td>Serial No:</td><td><asp:TextBox ID="SerialNoTextBox" runat="server" maxlength="50" Text='<%# Bind("SerialNo") %>' /> </td></tr><tr><td>Model No:</td><td><asp:TextBox ID="ModelNoTextBox" runat="server" maxlength="50" Text='<%# Bind("ModelNo") %>' /> </td></tr><tr><td>Is This a Virtual Machine:</td><td><asp:CheckBox ID="IsVirtualMachineCheckBox" runat="server" Checked='<%# Bind("IsVirtualMachine") %>' /></td></tr><tr><td>Serviceability:</td><td> <asp:DropDownList ID="DropDownListServiceability" runat="server" OnDataBound="AddNullValueToDropDownList_DataBound" AppendDataBoundItems="true" DataSourceID="ServiceabilityList" DataTextField="ServiceabilityName" DataValueField="ServiceabilityID" SelectedValue='<%# Bind("ServiceabilityID") %>'><asp:listitem value="" text="Select a value"></asp:listitem></asp:DropDownList><asp:SqlDataSource ID="ServiceabilityList" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionStringGeoQ %>" SelectCommand="SELECT * FROM [Serviceability]"></asp:SqlDataSource> </td></tr><tr><td>Kit Name:</td><td><asp:DropDownList ID="DropDownList_Kit" runat="server" OnDataBound="AddNullValueToDropDownList_DataBound" AppendDataBoundItems="true" DataSourceID="KitList" DataTextField="KitName" DataValueField="KitID" SelectedValue='<%# Bind("KitID") %>'><asp:listitem value="" text="Select a value"></asp:listitem></asp:DropDownList><asp:SqlDataSource ID="KitList" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionStringGeoQ %>" SelectCommand="SELECT * FROM [Kit]"></asp:SqlDataSource> </td></tr><tr><td>Image:</td><td><asp:FileUpload ID="ImageFileUpload" AllowMultiple="false" ClientIDMode="Static" runat="server" /><asp:HiddenField ID="ImagePathHdn" ClientIDMode="Static" runat="server" Value='<%# Bind("ImagePath") %>' /> <asp:HiddenField ID="DBImagePath" ClientIDMode="Static" runat="server" Value='<%# Bind("fullPath") %>' /> <div id="uploadPreview"><asp:Image ID="imgPreview" CssClass="imgPreview" ClientIDMode="Static" ImageUrl='<%# Bind("fullPath")%>' runat="server" /></div></td></tr></tbody></table></div><div class="nopad"><table id="Governance" class="table table-bordered span12"><thead><tr><th colspan="2" class="span12">Governance</th></tr></thead><tbody><tr><td class="span6">Last Stock Check Date:</td><td class="span6"><asp:TextBox ID="LastStockCheck_aspnetdatepicker" runat="server" Text='<%# Bind("LastStockCheck", "{0:dd MMM yyyy}") %>' /> </td></tr><tr><td>Stock Check Frequency (Days):</td><td><asp:TextBox ID="StockCheckFreqDaysTextBox" runat="server" Text='<%# Bind("StockCheckFreqDays") %>' /> </td></tr><tr><td>Disposed Of Date:</td><td><asp:TextBox ID="DisposedOfDate_aspnetdatepicker" runat="server" Text='<%# Bind("DisposedOfDate", "{0:dd MMM yyyy}") %>' /> </td></tr><tr><td>Disposed By:</td><td><asp:TextBox ID="DisposedByTextBox" runat="server" Text='<%# Bind("DisposedBy") %>' /> </td></tr><tr><td>Warranty Expiry Date:</td><td><asp:TextBox ID="WarrantyExpDate_aspnetdatepicker" runat="server" Text='<%# Bind("WarrantyExpDate", "{0:dd MMM yyyy}") %>' /> </td></tr><tr><td>Non-Tech Frequency (Days):</td><td><asp:TextBox ID="NonTechFreqDaysTextBox" runat="server" Text='<%# Bind("NonTechFreqDays") %>' /> </td></tr><tr><td>Last Non-Tech Date:</td><td><asp:TextBox ID="LastNonTechDate_aspnetdatepicker" runat="server" Text='<%# Bind("LastNonTechDate", "{0:dd MMM yyyy}") %>' /> </td></tr><tr><td>Non-Tech Instructions:</td><td><asp:TextBox ID="NonTechInstructionstextarea" runat="server" TextMode="MultiLine" Text='<%# Bind("NonTechInstructions") %>'></asp:TextBox></td></tr></tbody></table></div><div class="nopad"><table id="Ownership" class="table table-bordered span12"><thead><tr><th colspan="2" class="span12">Ownership</th></tr></thead><tbody><tr><td class="span6">Sustained By:</td><td class="span6"><asp:TextBox ID="SustainedByTextBox" runat="server" Text='<%# Bind("SustainedBy") %>' /> </td></tr><tr><td>Owned By:</td><td><asp:TextBox ID="OwnedByTextBox" runat="server" Text='<%# Bind("OwnedBy") %>' /> </td></tr><tr><td>Signed Out By:</td><td><asp:TextBox ID="SignedOutByTextBox" runat="server" Text='<%# Bind("SignedOutBy") %>' /> </td></tr><tr><td>Location:</td><td><asp:TextBox ID="LocationTextBox" runat="server" maxlength="50" Text='<%# Bind("Location") %>' /> </td></tr><tr><td>Loaned To:</td><td><asp:TextBox ID="LoanedToTextBox" runat="server" Text='<%# Bind("LoanedTo") %>' /> </td></tr><tr><td>Loaned To Location:</td><td><asp:TextBox ID="LoanedToLocationTextBox" runat="server" maxlength="50" Text='<%# Bind("LoanedToLocation") %>' /> </td></tr><tr><td>Expected Loan Return Date:</td><td><asp:TextBox ID="ExpectedLoanReturnDate_aspnetdatepicker" runat="server" Text='<%# Bind("ExpectedLoanReturnDate", "{0:dd MMM yyyy}") %>' /> </td></tr></tbody></table><asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CssClass="btn marginR10 marginB10" CommandName="Update" Text="Update" /><asp:LinkButton ID="UpdateCancelButton" runat="server" CssClass="btn marginR10 marginB10" CausesValidation="False" CommandName="Cancel" Text="Cancel" /> <asp:LinkButton ID="DeleteButton_aspnetSimpleConfirmDelete" runat="server" OnClick="DeleteButton_aspnetSimpleConfirmDelete_Click" CausesValidation="False" CssClass="btn btn-danger marginR10 marginB10" OnClientClick="return confirm('Are you sure you want to delete this record?');" CommandName="Delete" Text="<span class='icomoon-icon-remove white'></span> Delete " /></EditItemTemplate><InsertItemTemplate> HardwareName:<asp:TextBox ID="HardwareNameTextBox" runat="server" Text='<%# Bind("HardwareName") %>' /><br /> NSN:<asp:TextBox ID="NSNTextBox" runat="server" Text='<%# Bind("NSN") %>' /><br /> AssetNo:<asp:TextBox ID="AssetNoTextBox" runat="server" Text='<%# Bind("AssetNo") %>' /><br /> SerialNo:<asp:TextBox ID="SerialNoTextBox" runat="server" Text='<%# Bind("SerialNo") %>' /><br /> ModelNo:<asp:TextBox ID="ModelNoTextBox" runat="server" Text='<%# Bind("ModelNo") %>' /><br /> LastStockCheck:<asp:TextBox ID="LastStockCheckTextBox" runat="server" Text='<%# Bind("LastStockCheck") %>' /><br /> StockCheckFreqDays:<asp:TextBox ID="StockCheckFreqDaysTextBox" runat="server" Text='<%# Bind("StockCheckFreqDays") %>' /><br /> DisposedOfDate:<asp:TextBox ID="DisposedOfDateTextBox" runat="server" Text='<%# Bind("DisposedOfDate") %>' /><br /> DisposedBy:<asp:TextBox ID="DisposedByTextBox" runat="server" Text='<%# Bind("DisposedBy") %>' /><br /> WarrantyExpDate:<asp:TextBox ID="WarrantyExpDateTextBox" runat="server" Text='<%# Bind("WarrantyExpDate") %>' /><br /> SustainedBy:<asp:TextBox ID="SustainedByTextBox" runat="server" Text='<%# Bind("SustainedBy") %>' /><br /> OwnedBy:<asp:TextBox ID="OwnedByTextBox" runat="server" Text='<%# Bind("OwnedBy") %>' /><br /> IsVirtualMachine:<asp:CheckBox ID="IsVirtualMachineCheckBox" runat="server" Checked='<%# Bind("IsVirtualMachine") %>' /><br /> NonTechFreqDays:<asp:TextBox ID="NonTechFreqDaysTextBox" runat="server" Text='<%# Bind("NonTechFreqDays") %>' /><br /> LastNonTechDate:<asp:TextBox ID="LastNonTechDateTextBox" runat="server" Text='<%# Bind("LastNonTechDate") %>' /><br /> NonTechInstructions:<asp:TextBox ID="NonTechInstructionsTextBox" runat="server" Text='<%# Bind("NonTechInstructions") %>' /><br /> SignedOutBy:<asp:TextBox ID="SignedOutByTextBox" runat="server" Text='<%# Bind("SignedOutBy") %>' /><br /> Location:<asp:TextBox ID="LocationTextBox" runat="server" Text='<%# Bind("Location") %>' /><br /> LoanedTo:<asp:TextBox ID="LoanedToTextBox" runat="server" Text='<%# Bind("LoanedTo") %>' /><br /> LoanedToLocation:<asp:TextBox ID="LoanedToLocationTextBox" runat="server" Text='<%# Bind("LoanedToLocation") %>' /><br /> ExpectedLoanReturnDate:<asp:TextBox ID="ExpectedLoanReturnDateTextBox" runat="server" Text='<%# Bind("ExpectedLoanReturnDate") %>' /><br /> Serviceability: <asp:TextBox ID="ServiceabilityTextBox" runat="server" Text='<%# Bind("ServiceabilityID") %>' /><br /> KitID: <asp:TextBox ID="KitIDTextBox" runat="server" Text='<%# Bind("KitID") %>' /><br /> KitName:<asp:TextBox ID="KitNameTextBox" runat="server" Text='<%# Bind("KitName") %>' /><br /><asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert" Text="Insert" /> <asp:LinkButton ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" /></InsertItemTemplate><ItemTemplate><div class="nopad"><table id="HardwareItem" class="table table-bordered span12"><thead><tr><th colspan="2" class="span12">Details</th></tr></thead><tbody><tr><td class="span4">GeoQ ID:</td><td class="span8"><%# Eval("HardwareID") %></td></tr><tr><td>Hardware Name:</td><td><%# Eval("HardwareName") %></td></tr> <tr><td>NSN:</td><td><%# Eval("NSN")%></td></tr> <tr><td>Asset No:</td><td><%# Eval("AssetNo")%></td></tr> <tr><td>Serial No:</td><td><%# Eval("SerialNo")%></td></tr> <tr><td>Model No:</td><td><%# Eval("ModelNo")%></td></tr> <tr><td>Is This a Virtual Machine:</td><td><%# Eval("IsVirtualMachine")%></td></tr> <tr><td>Servicability:</td><td><%# Eval("ServiceabilityName")%></td></tr><tr><td>Part of Kit:</td><td><%# Eval("KitName")%></td></tr><tr><td>Image:</td><td><asp:Image ID="imgPreview" class="imgPreview" ImageUrl='<%# Eval("fullPath")%>' runat="server"/></td></tr> </tbody></table></div><div class="nopad"><table id="Governance" class="table table-bordered span12"><thead><tr><th colspan="2" class="span12">Governance</th></tr></thead><tbody><tr><td class="span4">Last Stock Check Date:</td><td class="span8"><%# Eval("LastStockCheck", "{0:dd MMM yyyy}")%></td></tr> <tr><td>Stock Check Frequency (Days):</td><td><%# Eval("StockCheckFreqDays")%></td></tr> <tr><td>Disposed Of Date:</td><td><%# Eval("DisposedOfDate", "{0:dd MMM yyyy}") %></td></tr> <tr><td>Disposed of By:</td><td><%# Eval("DisposedBy")%></td></tr> <tr><td>Warranty Expiry Date:</td><td><%# Eval("WarrantyExpDate", "{0:dd MMM yyyy}")%></td></tr> <tr><td>Non-Tech Frequency (Days):</td><td><%# Eval("NonTechFreqDays")%></td></tr> <tr><td>Last Non-Tech Date:</td><td><%# Eval("LastNonTechDate", "{0:dd MMM yyyy}")%></td></tr><tr><td>Non-Tech Instructions:</td><td><%# Eval("NonTechInstructions")%></td></tr></tbody></table></div><div class="nopad"><table id="Ownership" class="table table-bordered span12"><thead><tr><th colspan="2" class="span12">Ownership</th></tr></thead><tbody><tr><td class="span4">Sustained By:</td><td class="span8"><%# Eval("SustainedBy")%></td></tr> <tr><td>Owned By:</td><td><%# Eval("OwnedBy")%></td></tr> <tr><td>Signed Out By:</td><td><%# Eval("SignedOutBy")%></td></tr><tr><td>Normal Location:</td><td><%# Eval("Location")%></td></tr><tr><td>Loaned To:</td><td><%# Eval("LoanedTo")%></td></tr><tr><td>Loaned To Location:</td><td><%# Eval("LoanedToLocation")%></td></tr><tr><td>Expected Loan Return Date:</td><td><%# Eval("ExpectedLoanReturnDate", "{0:dd MMM yyyy}")%></td></tr></tbody></table></div><asp:LinkButton ID="EditButton" runat="server" CausesValidation="False" CssClass="btn marginR10 marginB10" CommandName="Edit" Text="Edit Details" /> <asp:LinkButton ID="NewButton" runat="server" CausesValidation="False" CssClass="btn marginR10 marginB10" CommandName="New" Text="New" /></ItemTemplate></asp:FormView><br /></div>
EditControl.ascx.cs
using System; using System.Configuration; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Web.UI.WebControls; public partial class Controls_WebUserControl : System.Web.UI.UserControl { protected string path = ConfigurationManager.AppSettings["ImagePath"]; protected string[] allowedExtenstions = new string[] { ".png", ".jpg", ".jpeg", ".gif" }; protected void Page_Load(object sender, EventArgs e) { string selectCommand = "SELECT Hardware.HardwareID, Hardware.HardwareName, Hardware.NSN, Hardware.AssetNo, Hardware.SerialNo, Hardware.ModelNo, Hardware.LastStockCheck, Hardware.StockCheckFreqDays, Hardware.DisposedOfDate, Hardware.DisposedBy, Hardware.WarrantyExpDate, Hardware.SustainedBy, Hardware.OwnedBy, Hardware.IsVirtualMachine, Hardware.NonTechFreqDays, Hardware.LastNonTechDate, Hardware.NonTechInstructions, Hardware.SignedOutBy, Hardware.Location, Hardware.LoanedTo, Hardware.LoanedToLocation, Hardware.ExpectedLoanReturnDate, Hardware.ImagePath, '~' + Hardware.ImagePath AS fullPath, Hardware.ServiceabilityID, Hardware.KitID, Kit.KitName, Serviceability.ServiceabilityName FROM Hardware LEFT OUTER JOIN Serviceability ON Hardware.ServiceabilityID = Serviceability.ServiceabilityID LEFT OUTER JOIN Kit ON Hardware.KitID = Kit.KitID WHERE (Hardware.HardwareID = @HardwareID)"; SqlDataSourceHardware.SelectCommand = selectCommand; } protected void AddNullValueToDropDownList_DataBound(object sender, EventArgs e) { DropDownList dropdownlist = (DropDownList)sender; if (dropdownlist.SelectedValue == string.Empty) { dropdownlist.Items[0].Enabled = true; } } protected void SqlDataSourceHardware_Updating(object sender, SqlDataSourceCommandEventArgs e) { try { var flpImage = (FileUpload)FormView1.FindControl("ImageFileUpload"); var hardwareId = ((Label) FormView1.FindControl("HardwareIDLabel")).Text; if (flpImage.HasFile) { var physicalPath = Server.MapPath("~" + path); if (File.Exists(physicalPath + hardwareId + Path.GetExtension(flpImage.FileName))) { File.Delete(physicalPath + hardwareId + Path.GetExtension(flpImage.FileName)); } var fullImagePath = physicalPath + hardwareId + Path.GetExtension(flpImage.FileName); flpImage.SaveAs(fullImagePath); e.Command.Parameters["@ImagePath"].Value = path + hardwareId + Path.GetExtension(flpImage.FileName); if (allowedExtenstions.Contains(Path.GetExtension(flpImage.FileName).ToLower())) { CreateThumbnail(fullImagePath, Convert.ToInt32(ConfigurationManager.AppSettings["allowedWidth"]), Convert.ToInt32(ConfigurationManager.AppSettings["allowedHeight"])); } } } catch (Exception ex) { //throw; } } protected void DeleteButton_aspnetSimpleConfirmDelete_Click(object sender, EventArgs e) { try { var ImagePath = (HiddenField)FormView1.FindControl("DBImagePath"); var physicalPath = Server.MapPath(ImagePath.Value); if (File.Exists(physicalPath)) { File.Delete(physicalPath); } } catch (Exception) { } } public static void CreateThumbnail(string lcFilename, int lnWidth, int lnHeight) { System.Drawing.Bitmap bmpOut = null; try { Bitmap loBMP = new Bitmap(lcFilename); ImageFormat loFormat = loBMP.RawFormat; decimal lnRatio; int lnNewWidth = 0; int lnNewHeight = 0; if (loBMP.Width < lnWidth && loBMP.Height < lnHeight) return; if (loBMP.Width > loBMP.Height) { lnRatio = (decimal)lnWidth / loBMP.Width; lnNewWidth = lnWidth; decimal lnTemp = loBMP.Height * lnRatio; lnNewHeight = (int)lnTemp; } else { lnRatio = (decimal)lnHeight / loBMP.Height; lnNewHeight = lnHeight; decimal lnTemp = loBMP.Width * lnRatio; lnNewWidth = (int)lnTemp; } bmpOut = new Bitmap(lnNewWidth, lnNewHeight); Graphics g = Graphics.FromImage(bmpOut); g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; g.FillRectangle(Brushes.White, 0, 0, lnNewWidth, lnNewHeight); g.DrawImage(loBMP, 0, 0, lnNewWidth, lnNewHeight); loBMP.Dispose(); } catch { return; } bmpOut.Save(lcFilename); } }