www org mapwingis mapwindows mapwindow espaƱol c# asp.net gridview

c# - org - mapwindows 5



La carga de la imagen no funciona. Obtenga siempre el valor FALSO (10)

Casi siempre obtendrá un valor booleano (falso) ya que establece el valor de strImage como tal.

dr["strImage"] = fileupload.HasFile;

Verifique su código bajo el foreach.

Además, en el evento gvArticle_RowUpdating() , para el control de strImage de strImage el valor de strImage lugar de usar la strImage de fileupload id definida.

protected void gvArticle_RowUpdating(object sender, GridViewUpdateEventArgs e) { GridViewRow row = gvArticle.Rows[e.RowIndex]; FileUpload fu = row.Cells[0].FindControl("fileupload") as FileUpload; if (fu != null && fu.HasFile) { fu.SaveAs(Server.MapPath("~/Uploaded Images" + fu.FileName)); } }

UI La parte de carga de imágenes no funciona, quiero cargar la ruta de la imagen en la base de datos pero no funciona, y no enlazarla correctamente. No puedo guardarla. ¿Pueden ayudarme? La tabla del valor de la imagen de carga que se muestra siempre es FALSA. ASPX

<asp:TemplateField HeaderText="Images"> <ItemTemplate> <asp:FileUpload runat="server" AutoPostBack="True" ID="fileupload" CommandArgument=''<%# Eval("strImage") %>'' ClientIDMode="Static"/> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText=""> <ItemTemplate> <asp:Image ImageUrl="~/Uploaded Images/Default.png" runat="server" ID="image" Width="40" Height="40"/> </ItemTemplate> </asp:TemplateField>

CÓDIGO

#region Detail Save1 private DataTable CreateDetailSave() { DataTable dtDetailSave1 = new DataTable(); DataColumn dc1; dc1 = new DataColumn("intArticleDetailId"); dtDetailSave1.Columns.Add(dc1); dc1 = new DataColumn("intSectionId"); dtDetailSave1.Columns.Add(dc1); dc1 = new DataColumn("intCompoundId"); dtDetailSave1.Columns.Add(dc1); dc1 = new DataColumn("decSectionWeight"); dtDetailSave1.Columns.Add(dc1); dc1 = new DataColumn("intMessageId"); dtDetailSave1.Columns.Add(dc1); dc1 = new DataColumn("strImage"); dtDetailSave1.Columns.Add(dc1); foreach (GridViewRow row in gvArticle.Rows) { DataRow dr = dtDetailSave1.NewRow(); Label lblintArticleDetailId = (Label)row.FindControl("lblArticleDetailId"); Label lblSectionId = (Label)row.FindControl("lblSectionId"); DropDownList ddlCompound = (DropDownList)row.FindControl("ddlCompoundId"); TextBox txtdecSectionWeighte = (TextBox)row.FindControl("txtdecSectionWeighte"); DropDownList intMessage = (DropDownList)row.FindControl("ddlMessage"); FileUpload fileupload = (FileUpload)row.FindControl("fileupload"); dr["intArticleDetailId"] = CurrentMode == "Add" ? -1 : Convert.ToInt32(lblintArticleDetailId.Text); dr["intSectionId"] = Convert.ToInt32(lblSectionId.Text); dr["intCompoundId"] = ddlCompound.SelectedValue; dr["decSectionWeight"] = txtdecSectionWeighte.Text.Trim() != "" ? Convert.ToDecimal(txtdecSectionWeighte.Text.Trim()) : 0; dr["intMessageId"] = intMessage.SelectedValue; dr["strImage"] = fileupload.HasFile; dtDetailSave1.Rows.Add(dr); } return dtDetailSave1; } #endregion #region pageload protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { ClearControls(); FillArticleDetails(); EnableControls(false); Session["SearchPopup"] = false; } else { if (Session["SearchPopup"] != null) { SearchPopup = (bool)(Session["SearchPopup"]); if (SearchPopup != false) { MyMPE.Show(); } else { MyMPE.Hide(); } } vAdSearchParaList = new List<SearchParametors>(); } } #endregion #region Create Article table private void createArticleDataTable() { if (dt.Columns.Count == 0) { dt.Columns.Add(new DataColumn("intArticleDetailId", typeof(int))); dt.Columns.Add(new DataColumn("intSectionId", typeof(int))); dt.Columns.Add(new DataColumn("strSectionName", typeof(string))); dt.Columns.Add(new DataColumn("intCompoundId", typeof(string))); dt.Columns.Add(new DataColumn("decSectionWeight", typeof(string))); dt.Columns.Add(new DataColumn("intMessageId", typeof(string))); dt.Columns.Add(new DataColumn("fileupload", typeof(string))); } gvArticle.DataSource = dt; gvArticle.DataBind(); } #endregion #region Compound Grid - Add empty row private void ArticleGridAddEmptyRow(int newId) { DataRow newDr = null; newDr = dt.NewRow(); newDr["intArticleDetailId"] = 1; newDr["intSectionId"] = 1; newDr["strSectionName"] = ""; newDr["intCompoundId"] = ""; newDr["decSectionWeight"] = ""; newDr["intMessageId"] = ""; newDr["strImage"] = ""; dt.Rows.Add(newDr); if (dtArticleDetails == null || dtArticleDetails.Rows.Count == 0) { dtArticleDetails = dt; } else { dtArticleDetails.Merge(dt); gvArticle.DataSource = dt; gvArticle.DataBind(); } } #endregion protected void gvArticle_RowUpdating(object sender, GridViewUpdateEventArgs e) { GridViewRow row = gvArticle.Rows[e.RowIndex]; FileUpload fu = row.Cells[0].FindControl("strImage") as FileUpload; if (fu != null && fu.HasFile) { fu.SaveAs(Server.MapPath("~/Uploaded Images" + fu.FileName)); } }

full aspx

<asp:GridView ID="gvArticle" ShowHeaderWhenEmpty="True" CssClass="table table-bordered table-condensed table-hover" AutoGenerateColumns="False" runat="server" AllowPaging="True" PageSize="15" OnRowDataBound="gvArticle_RowDataBound" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="4" ForeColor="Black" GridLines="Horizontal" OnRowUpdating="gvArticle_RowUpdating"> <%--<HeaderStyle BackColor="#3d4247" ForeColor="White" />--%> <Columns> <asp:TemplateField HeaderText="intArticleDetail" Visible="false"> <ItemTemplate> <asp:Label ID="lblArticleDetailId" Width="2" Text=''<%# Bind("intArticleDetailId") %>'' ClientIDMode="Static" runat="server"></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="SectionID" Visible="false"> <ItemTemplate> <asp:Label ID="lblSectionId" Width="2" Text=''<%# Bind("intSectionId") %>'' ClientIDMode="Static" runat="server"></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Section"> <ItemTemplate> <asp:Label ID="lblSectionName" Width="100" Text=''<%# Bind("strSectionName") %>'' ClientIDMode="Static" runat="server"></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Compound"> <EditItemTemplate> <asp:Label ID="lblItemTypeEdit" Width="50" Text=''<%# Bind("strCompoundName") %>'' lientIDMode="Static" AutoPostBack="true" runat="server"> </asp:Label> </EditItemTemplate> <ItemTemplate> <asp:DropDownList ID="ddlCompoundId" Width="200" CssClass="form-control my-DropDownThin" lientIDMode="Static" AutoPostBack="true" runat="server"> </asp:DropDownList> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Weight"> <ItemTemplate> <asp:TextBox ID="txtdecSectionWeighte" Width="100%" Text=''<%# Bind("decSectionWeight") %>'' lientIDMode="Static" runat="server"> </asp:TextBox> </ItemTemplate> </asp:TemplateField> <%--<asp:TemplateField HeaderText="Messagers"> <ItemTemplate> <asp:TextBox ID="txtMessage" Width="100%" Text=''<%# Bind("intMessageId") %>'' ClientIDMode="Static" runat="server"></asp:TextBox> </ItemTemplate> </asp:TemplateField>--%> <asp:TemplateField HeaderText="Messagers"> <EditItemTemplate> <asp:Label ID="lblMessageId" Width="50" Text=''<%# Bind("strMessage") %>'' ClientIDMode="Static" AutoPostBack="true" runat="server"> </asp:Label> </EditItemTemplate> <ItemTemplate> <asp:DropDownList ID="ddlMessage" Width="300" CssClass="form-control my-DropDownThin" lientIDMode="Static" AutoPostBack="true" runat="server"> </asp:DropDownList> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Images"> <ItemTemplate> <asp:FileUpload runat="server" AutoPostBack="True" ID="uploadFImage" CommandArgument=''<%# Eval("strImage") %>'' ClientIDMode="Static"/> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText=""> <ItemTemplate> <asp:Image ImageUrl="~/Uploaded Images/Default.png" runat="server" ID="btnViewFImage" Width="40" Height="40"/> </ItemTemplate> </asp:TemplateField> </Columns> <FooterStyle BackColor="#CCCC99" ForeColor="Black" /> <HeaderStyle BackColor="#333333" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="White" ForeColor="Black" HorizontalAlign="Right" /> <SelectedRowStyle BackColor="#CC3333" Font-Bold="True" ForeColor="White" /> <SortedAscendingCellStyle BackColor="#F7F7F7" /> <SortedAscendingHeaderStyle BackColor="#4B4B4B" /> <SortedDescendingCellStyle BackColor="#E5E5E5" /> <SortedDescendingHeaderStyle BackColor="#242121" /> </asp:GridView> </div> </ContentTemplate> <Triggers> <asp:PostBackTrigger ControlID="gvArticle"/> </Triggers> </asp:UpdatePanel> </div> </div>

gvArticle_rowdatabound

protected void gvArticle_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.Footer) { } else if (e.Row.RowType == DataControlRowType.DataRow) { { } DataTable CompoundCode = clsArticle.CompoundDataForGrid(""); DropDownList ddlCompoundId = (DropDownList)e.Row.FindControl("ddlCompoundId"); if (ddlCompoundId != null) { ddlCompoundId.DataTextField = "Compound Code"; ddlCompoundId.DataValueField = "Compound Id"; ddlCompoundId.DataSource = CompoundCode; ddlCompoundId.DataBind(); string country = (e.Row.FindControl("ddlCompoundId") as DropDownList).Text; ddlCompoundId.Items.FindByValue(country).Selected = true; } DataTable MsgCode = clsArticle.MessageDataForGrid(""); DropDownList ddlMessage = (DropDownList)e.Row.FindControl("ddlMessage"); if (ddlMessage != null) { ddlMessage.DataTextField = "Message Name"; ddlMessage.DataValueField = "Message Id"; ddlMessage.DataSource = MsgCode; ddlMessage.DataBind(); ddlMessage.Items.Insert(0, new ListItem("Please select")); string country = (e.Row.FindControl("ddlMessage") as DropDownList).Text; ddlMessage.Items.FindByValue(country).Selected = true; } //} } }


Como @Ruban.J dijo " FileUpload control FileUpload no funcionará con la devolución de datos asincrónica" significa que siempre tiene algún problema con UpdatePanel . Siempre que un Postback una Postback fileupload pierda los estados [Sus archivos],

También dijo " PARA PERSISTIR EL VALOR DEL CONTROL DE ARCHIVO DE ARCHIVOS" , puede almacenar el objeto de la carga del archivo por completo en la sesión y luego de la devolución de datos recuperar los valores que necesita de la sesión.

rompiendo todo el proceso en pequeños pasos

Paso 1: debes guardar todo el objeto de carga de archivos en sesión cada vez que se produzca la devolución de datos, por esto creo que esto debería funcionar en el evento pageLoad.

if (!IsPostBack) { //Bind your gridview 1st time } else { Dictionary<int, HttpPostedFile> postedFiles = new Dictionary<int, HttpPostedFile>(); foreach (GridViewRow row in gvArticle.Rows) { int id = Convert.ToInt16("YourUniqueRowId"); // whaterver your unique id is there DropDownList ddlCompound = (DropDownList)row.FindControl("ddlCompoundId"); // find your fileupload controll for that row FileUpload fileupload = (FileUpload)row.FindControl("fileupload"); if (fileupload.HasFile) { postedFiles.Add(id, fileupload.PostedFile); } } Session["files"] = postedFiles; }

También verifique si está obteniendo información de archivo aquí, investigando cada HttpPostedFile .

Paso 2: siempre que necesites archivos, obténgala de la sesión:

if (Session["files"] != null) { Dictionary<int, HttpPostedFile> postedFiles = (Dictionary<int, HttpPostedFile>) Session["files"]; }

Puede hacer coincidir el valor clave para decidir qué archivo es para cada fila y guardarlo en la base de datos.


Creo que en su método CreateDetailSave dentro del bucle foreach está guardando su filename como fileupload.Hasfile que siempre devolverá verdadero o falso. Es por eso que siempre devuelve falso:

foreach (GridViewRow row in gvArticle.Rows) { dr["strImage"] = fileupload.filename; //before it was fileupload.Hasfile }


Cuando se selecciona un archivo usando FileUpload Control , en la postback, PostedFile propiedad postback, PostedFile se inicializa con el objeto HttpPostedFile para el archivo. Como la http request no puede mantener el estado, pierde su estado.

FileUpload control FileUpload no funcionará con la asynchronous postback . Por lo tanto, se necesita una postback para obtener el archivo. Una forma es configurar los triggers para su botón Upload

PARA PERSISTIR EL VALOR DEL CONTROL DE ARCHIVO DE ARCHIVOS , puede almacenar el objeto de la carga del archivo por completo en la session y luego de recuperar los valores que necesita de la sesión.

EDITAR: prueba con el siguiente ejemplo.


El código dado tiene algunos errores graves y tampoco está completo. Es realmente difícil de reproducir en mi extremo. De todos modos, hay algo que se puede hacer para resolver el problema:

  • Elimine el código innecesario, como las etiquetas que contienen AutopostBack="true" .
  • ClientIdMode="static" en Gridview producirá HTML no válido y puede ser la causa de su problema, ya que producirá elementos HTML que tienen los mismos valores de id y que crearán una página HTML no válida. Hay varias líneas de código que contienen este atributo. Simplemente elimina estos.
  • El tercero es su línea de código aspx <asp:PostBackTrigger ControlID="gvArticle"/> . Debería apuntar a un control de botón que causa la devolución de datos después de haber seleccionado la imagen. Creo que aquí debería usarse el ID del botón Guardar.

Haga los cambios en su código y todavía no está resuelto, necesita proporcionar un código de página completo para más diagnóstico. ¡Disfrutar!


En la página aspx use el control de actualización del panel para guardar las ID que se generan. refere el siguiente código.

< asp:TemplateField HeaderText=""> < ItemTemplate> <asp:UpdatePanel runat="server" UpdateMode="Conditional" ID="fileUploadPanel"> <ContentTemplate> <asp:FileUpload runat="server" AutoPostBack="True" ID="fileupload" CommandArgument=''<%# Eval("strImage") %>'' ClientIDMode="Static"/> </ContentTemplate> <Triggers> <asp:PostBackTrigger ControlID="fileupload" /> </Triggers> </asp:UpdatePanel> </ItemTemplate> <ItemTemplate> <asp:UpdatePanel runat="server" UpdateMode="Conditional" ID="ImageUploadPanel"> <ContentTemplate> <asp:Image ImageUrl="~/Uploaded Images/Default.png" runat="server" ID="image" Width="40" Height="40"/> </ContentTemplate> <Triggers> <asp:PostBackTrigger ControlID="image" /> </Triggers> </asp:UpdatePanel> </ItemTemplate> < /asp:TemplateField>

Espero que esto ayude..


Estás utilizando RowUpdating así que mi sugerencia es usar EditItemTemplate junto con ItemTemplate así que agrega esto

<EditItemTemplate> <asp:FileUpload runat="server" AutoPostBack="True" ID="fileupload" CommandArgument=''<%# Eval("strImage") %>'' ClientIDMode="Static"/> </EditItemTemplate>

Junto con esto:-

<ItemTemplate> <asp:FileUpload runat="server" AutoPostBack="True" ID="fileupload" CommandArgument=''<%# Eval("strImage") %>'' ClientIDMode="Static"/> </ItemTemplate>

Entonces su imagen de TemplateField se verá así

<asp:TemplateField HeaderText="Images"> <ItemTemplate> <asp:FileUpload runat="server" AutoPostBack="True" ID="fileupload" CommandArgument=''<%# Eval("strImage") %>'' ClientIDMode="Static"/> </ItemTemplate> <EditItemTemplate> <asp:FileUpload runat="server" AutoPostBack="True" ID="fileupload" CommandArgument=''<%# Eval("strImage") %>'' ClientIDMode="Static"/> </EditItemTemplate> </asp:TemplateField>

Y para subir archivos como Lesmian dijo, usa esto: -

protected void gvArticle_RowUpdating(object sender, GridViewUpdateEventArgs e) { GridViewRow row = gvArticle.Rows[e.RowIndex]; FileUpload fu = row.Cells[0].FindControl("strImage") as FileUpload; if (fu != null && fu.HasFile) { fu.SaveAs(Server.MapPath("~/Uploaded Images/" + fu.FileName)); } }

Espero que esto te ayudará.


Intenta cambiar ClientIDMode = Inherit en tu control FileUpload y comprobar que funciona.


Intenta guardarlo con una ruta diferente a la que lee: Server.MapPath("~/Uploaded Images" + fu.FileName) != <asp:Image ImageUrl="~/Uploaded Images/Default.png" Falta aviso / en el camino de salvar. Prueba este código:

protected void gvArticle_RowUpdating(object sender, GridViewUpdateEventArgs e) { GridViewRow row = gvArticle.Rows[e.RowIndex]; FileUpload fu = row.Cells[0].FindControl("strImage") as FileUpload; if (fu != null && fu.HasFile) { fu.SaveAs(Server.MapPath("~/Uploaded Images/" + fu.FileName)); } }


Tu código tiene muchos problemas. En primer lugar, el control FileUpload no tiene la propiedad AutoPostBack ni la propiedad CommandArgument , por lo que necesita un botón en cada fila.

fragmento .aspx

<asp:TemplateField HeaderText="upload"> <ItemTemplate> <asp:FileUpload ID="fileupload" AutoPostBack="true" runat="server" /> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="upload"> <ItemTemplate> <asp:Button ID="btnUpdate" Text="upload" OnClick="btnUpdate_Click" CommandArgument=''<%#Eval("PK_FIELD") %>'' runat="server" /> </ItemTemplate> </asp:TemplateField>

fragmento .aspx.cs

protected void btnUpdate_Click(object sender, EventArgs e) { FileUpload fu = ((GridViewRow)((WebControl)sender).NamingContainer) .FindControl("fileupload") as FileUpload; bool ok = false; if (fu != null && fu.HasFile) { try { //possible issue here. //process NEED PERMISSION to write to this folder //also some checks with fu.PostedFile are recommended fu.SaveAs(Server.MapPath("~/images/" + fu.FileName)); ok = true; } catch (Exception ex) { ok = false; } } if (ok) { //update DB table and GridViewRow image field. } }

Espero que esta explicación sea útil y aceptable.

Actualización basada en su gridview

<asp:GridView ID="gvArticle" ShowHeaderWhenEmpty="True" CssClass="table table-bordered table-condensed table-hover" AutoGenerateColumns="False" runat="server" AllowPaging="True" PageSize="15" OnRowDataBound="gvArticle_RowDataBound" DataKeyNames="PK_field" **important** > <%--<HeaderStyle BackColor="#3d4247" ForeColor="White" />--%> <Columns> <asp:TemplateField HeaderText="intArticleDetail" Visible="false"> <ItemTemplate> <asp:Label ID="lblArticleDetailId" Width="2" Text=''<%# Eval("intArticleDetailId") %>'' **Bind is nonsense for label** runat="server"></asp:Label> **ClientIDMode="Static" remove everiwhere** </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="SectionID" Visible="false"> <ItemTemplate> <asp:Label ID="lblSectionId" Width="2" Text=''<%# Bind("intSectionId") %>'' ClientIDMode="Static" runat="server"></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Section"> <ItemTemplate> <asp:Label ID="lblSectionName" Width="100" Text=''<%# Bind("strSectionName") %>'' ClientIDMode="Static" runat="server"></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Compound"> <EditItemTemplate>** no edit mode remove** <asp:Label ID="lblItemTypeEdit" Width="50" Text=''<%# Bind("strCompoundName") %>'' ** see above** ClientIDMode="Static" AutoPostBack="true" runat="server"> </asp:Label> </EditItemTemplate> <ItemTemplate> <asp:DropDownList ID="ddlCompoundId" Width="200" CssClass="form-control my-DropDownThin" ClientIDMode="Static" AutoPostBack="true" runat="server"> </asp:DropDownList> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Weight"> <ItemTemplate> <asp:TextBox ID="txtdecSectionWeighte" Width="100%" Text=''<%# Bind("decSectionWeight") %>'' ClientIDMode="Static" runat="server"> </asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Messagers"> <ItemTemplate> <asp:TextBox ID="txtMessage" Width="100%" Text=''<%# Bind("intMessageId") %>'' ClientIDMode="Static" runat="server"></asp:TextBox> </ItemTemplate> </asp:TemplateField>--%> <asp:TemplateField HeaderText="Messagers"> <EditItemTemplate> <asp:Label ID="lblMessageId" Width="50" Text=''<%# Bind("strMessage") %>'' ClientIDMode="Static" AutoPostBack="true" runat="server"> </asp:Label> </EditItemTemplate> <ItemTemplate> <asp:DropDownList ID="ddlMessage" Width="300" CssClass="form-control my-DropDownThin" ClientIDMode="Static" AutoPostBack="true" runat="server"> </asp:DropDownList> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Images"> <ItemTemplate> **work with upload. remove wrong attributes** **AutoPostBack="True"CommandArgument=''<%# Eval("strImage") %>'' ClientIDMode="Static" ** <asp:FileUpload runat="server" ID="uploadFImage" /> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText=""> <ItemTemplate> <asp:Image ImageUrl="~/Uploaded Images/Default.png" runat="server" ID="btnViewFImage" Width="40" Height="40"/> </ItemTemplate> </asp:TemplateField> </Columns> <FooterStyle BackColor="#CCCC99" ForeColor="Black" /> <HeaderStyle BackColor="#333333" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="White" ForeColor="Black" HorizontalAlign="Right" /> <SelectedRowStyle BackColor="#CC3333" Font-Bold="True" ForeColor="White" /> <SortedAscendingCellStyle BackColor="#F7F7F7" /> <SortedAscendingHeaderStyle BackColor="#4B4B4B" /> <SortedDescendingCellStyle BackColor="#E5E5E5" /> <SortedDescendingHeaderStyle BackColor="#242121" /> </asp:GridView> ** place update button outside to update all columns ** <asp:Button ID="btnUpdate" Text="upload" OnClick="btnUpdate_Click" runat="server" /> //.aspx.cs protected void btnUpdate_Click(object sender, EventArgs e) { foreach(GridViewRow row in gvArticle.rows) { FileUpload fu = row.FindControl("fileupload") as FileUpload; bool ok = false; if (fu != null && fu.HasFile) { try { //possible issue here. //process NEED PERMISSION to write to this folder //also some checks with fu.PostedFile are recommended fu.SaveAs(Server.MapPath("~/images/" + fu.FileName)); ok = true; } catch (Exception ex) { ok = false; } } if (ok) { //update DB table and GridViewRow image field. } } }