Text Files causing problems in ASP.NET C # SQL

I am using a nested gridview (I have 5 nested gridviews). I applied a regular field validator to these gridviews.

But as soon as I click the button, commas are generated in the text box. Because of this, whenever I click the button, all checks are checked.

I researched many articles, but did not find any related ones.

Here is an image for a gridview with commas generated in a text box:

Image Of Error Page

HTML piece

<%-- First Gridview--%> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" CssClass="gvstyling gridview_width_60" ShowHeaderWhenEmpty="true" EmptyDataText="Record(s) Not Found!" DataKeyNames="locality" ShowHeader="false" OnRowDataBound="gvLocality_RowDataBound"> <Columns> <asp:TemplateField ItemStyle-Width="15px"> <ItemTemplate> <img alt="" style="cursor: pointer" src="../images/plus.png" /> <asp:Panel ID="pnlCompanyName" runat="server" Style="display: none"> <%-- Second Gridview --%> <asp:GridView ID="gvCompanyName" ShowHeader="false" ShowHeaderWhenEmpty="false" CssClass="gvstyling gridview_width_100" OnRowDataBound="gvCompanyName_RowDataBound" runat="server" AutoGenerateColumns="false" EmptyDataText="No Record(s) Found!"> <Columns> <asp:TemplateField ItemStyle-Width="15px"> <ItemTemplate> <asp:HiddenField ID="hfRetailer_Id" Value='<%# Eval("retailer_id") %>' runat="server"></asp:HiddenField> <asp:HiddenField ID="hfLocality" Value='<%# Eval("locality") %>' runat="server"></asp:HiddenField> <asp:Label ID="lbl" Visible="false" Text='<%# Eval("retailer_id") %>' runat="server"></asp:Label> <img alt="" style="cursor: pointer" src="../images/plus.png" /> <asp:Panel ID="pnlSellOrderNo" runat="server" Style="display: none"> <%-- Third Gridview --%> <asp:GridView ID="gvSellOrderNo" ShowHeader="false" ShowHeaderWhenEmpty="false" CssClass="gvstyling gridview_width_100" runat="server" OnRowDataBound="gvSellOrderNo_RowDataBound" AutoGenerateColumns="false" EmptyDataText="No Record(s) Found!"> <Columns> <asp:TemplateField ItemStyle-Width="15px"> <ItemTemplate> <asp:HiddenField ID="hf_SellOrderNo" Value='<%# Eval("sell_order_no") %>' runat="server"></asp:HiddenField> <asp:Label ID="lblSellOrderNo" Visible="false" Text='<%# Eval("sell_order_no") %>' runat="server"></asp:Label> <img alt="" style="cursor: pointer" src="../images/plus.png" /> <asp:Panel ID="pnlProductDetails" runat="server" Style="display: none"> <%-- fourth Gridview --%> <asp:GridView ID="gvProductDetails" ShowHeader="false" ShowHeaderWhenEmpty="false" CssClass="gvstyling gridview_width_100" runat="server" OnRowDataBound="gvProductDetails_RowDataBound" AutoGenerateColumns="false" EmptyDataText="No Record(s) Found!"> <Columns> <asp:TemplateField ItemStyle-Width="15px"> <ItemTemplate> <asp:HiddenField ID="HiddenField1" Value='<%# Eval("sell_order_no") %>' runat="server"></asp:HiddenField> <asp:HiddenField ID="hfProductId" Value='<%# Eval("product_id") %>' runat="server"></asp:HiddenField> <asp:Label ID="lblProductId" Visible="false" Text='<%# Eval("product_id") %>' runat="server"></asp:Label> <img alt="" style="cursor: pointer" src="../images/plus.png" /> <asp:Panel ID="pnlWarehouseDetails" runat="server" Style="display: none"> <%-- fifth Gridview--%> <asp:GridView ID="gvWarehouseDetails" ShowHeader="false" ShowHeaderWhenEmpty="false" CssClass="gvstyling gridview_width_100" runat="server" AutoGenerateColumns="false"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:Label ID="lblWarehouseId" Text='<%# Eval("c_warehouse_id") %>' Visible="false" runat="server"></asp:Label> <%# Eval("warehouse_name") %> (<%# Eval("qty") %>) </ItemTemplate> </asp:TemplateField> <asp:TemplateField> <ItemTemplate> <asp:TextBox ID="txtQty" runat="server"></asp:TextBox> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <%-- fifth Gridview --%> </asp:Panel> </ItemTemplate> </asp:TemplateField> <asp:TemplateField> <ItemTemplate> <%# Eval("product_name") %> (<%# Eval("qty") %>) </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <%-- fourth Gridview --%> </asp:Panel> </ItemTemplate> </asp:TemplateField> <asp:TemplateField> <ItemTemplate> <%# Eval("sell_order_no") %> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <%-- Third Gridview --%> </asp:Panel> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Business Name"> <ItemTemplate> <%# Eval("business_name") %> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <%-- Second Gridview--%> </asp:Panel> </ItemTemplate> </asp:TemplateField> <asp:TemplateField ItemStyle-CssClass="gv_item_bg"> <ItemTemplate> <asp:Label ID="lblLocality" runat="server" Text=' <%# Eval("locality") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <%-- First Gridview --%> 

Code behind file

 //Filling Shipping Company Name private void FillShippingCompanyName() { try { ArrayList arr = new ArrayList(); cm.ds.Clear(); cm.sp_dataset_execute("spdisplay_Shipping_Comany_Name", arr); ddlCompanyName.DataSource = cm.ds; ddlCompanyName.DataValueField = "shipping_code"; ddlCompanyName.DataTextField = "shipping_name"; ddlCompanyName.DataBind(); ddlCompanyName.Items.Insert(0, new ListItem("---- Select Shipping Company ----", "0")); } catch (Exception ex) { ErrHandler.WriteError(ex.Message.ToString(), "Shipping-Order-FillShippingCompanyName()"); } finally { cm.con.Close(); } } private void FillLocality() { try { cm.ds.Clear(); ArrayList arr = new ArrayList(); cm.sp_dataset_execute("spDisplay_Locality", arr); gvLocality.DataSource = cm.ds; gvLocality.DataBind(); } catch (Exception ex) { ErrHandler.WriteError(ex.Message.ToString(), "Shipping-Order-FillLocality()"); cm.con.Close(); } finally { cm.con.Close(); } } //Locality Gridview Row Databound (Level 1 Grdview) common cm1 = new common(); protected void gvLocality_RowDataBound(object sender, GridViewRowEventArgs e) { try { if (e.Row.RowType == DataControlRowType.DataRow) { string Locality = gvLocality.DataKeys[e.Row.RowIndex].Value.ToString(); GridView gvCompanyName = e.Row.FindControl("gvCompanyName") as GridView; cm1.ds.Clear(); //Binding Company Gridview ArrayList arr1 = new ArrayList(); arr1.Add("@locality|" + Locality + ""); cm1.sp_dataset_execute("spDisplayCompanyName", arr1); gvCompanyName.DataSource = cm1.ds; gvCompanyName.DataBind(); } } catch (Exception ex) { ErrHandler.WriteError(ex.Message.ToString(), "Recent_activity-gvRecentActivityOuter_RowDataBound()"); cm1.con.Close(); } finally { cm1.con.Close(); } } //Comapny Name Gridview Row Databound (Level 2 Grdview) common cm2 = new common(); protected void gvCompanyName_RowDataBound(object sender, GridViewRowEventArgs e) { try { if (e.Row.RowType == DataControlRowType.DataRow) { string RetailerId = ((HiddenField)e.Row.FindControl("hfRetailer_Id")).Value; GridView gvSellOrderNo = e.Row.FindControl("gvSellOrderNo") as GridView; string Locality = ((HiddenField)e.Row.FindControl("hfLocality")).Value; cm2.ds.Clear(); //Binding Company Gridview ArrayList arr = new ArrayList(); arr.Add("@retailer_id|" + RetailerId + ""); arr.Add("@locality|" + Locality + ""); cm2.sp_dataset_execute("spDisplay_SellOrderNo", arr); gvSellOrderNo.DataSource = cm2.ds; gvSellOrderNo.DataBind(); } } catch (Exception ex) { ErrHandler.WriteError(ex.Message.ToString(), "Shipping-Order-Page_Load()"); cm2.con.Close(); } finally { cm2.con.Close(); } } //Sell Order Gridview Row Databound (Level 3 Grdview) common cm3 = new common(); protected void gvSellOrderNo_RowDataBound(object sender, GridViewRowEventArgs e) { try { if (e.Row.RowType == DataControlRowType.DataRow) { string SellOrderNo = ((HiddenField)e.Row.FindControl("hf_SellOrderNo")).Value; GridView gvProductDetails = e.Row.FindControl("gvProductDetails") as GridView; FillProductDetails(gvProductDetails, SellOrderNo); } } catch (Exception ex) { ErrHandler.WriteError(ex.Message.ToString(), "Shipping-Order-gvSellOrderNo_RowDataBound()"); cm3.con.Close(); } finally { cm3.con.Close(); } } private void FillProductDetails(GridView gvProductDetails, string SellOrderNo) { cm3.ds.Clear(); //Product Details Gridview ArrayList arr = new ArrayList(); arr.Add("@sell_order_no|" + SellOrderNo + ""); cm3.sp_dataset_execute("spDisplay_ProductDetails", arr); gvProductDetails.DataSource = cm3.ds; gvProductDetails.DataBind(); } //Product Details Gridview Row Databound (Level 4 Grdview) common cm4 = new common(); protected void gvProductDetails_RowDataBound(object sender, GridViewRowEventArgs e) { try { if (e.Row.RowType == DataControlRowType.DataRow) { string ProductID = ((HiddenField)e.Row.FindControl("hfProductId")).Value; string SellOrderNo = ((HiddenField)e.Row.FindControl("HiddenField1")).Value; GridView gvWarehouseDetails = e.Row.FindControl("gvWarehouseDetails") as GridView; cm4.ds.Clear(); //Product Details Gridview ArrayList arr = new ArrayList(); arr.Add("@product_id|" + ProductID + ""); arr.Add("@sell_order_no|" + SellOrderNo + ""); cm4.sp_dataset_execute("spDisplay_WarehouseDetails", arr); gvWarehouseDetails.DataSource = cm4.ds; gvWarehouseDetails.DataBind(); } } catch (Exception ex) { ErrHandler.WriteError(ex.Message.ToString(), "Shipping-Order-gvProductDetails_RowDataBound()"); cm4.con.Close(); } finally { cm4.con.Close(); } } //Submit Button protected void btnSubmit_Click1(object sender, EventArgs e) { try { cm.ds.Clear(); //--Insert Query for Rs_Shipping_Order_Details string ShippingCode = "SHO" + DateTime.Now.ToString("yyyyMMddHHmmss"); string ShippingGroup = "SG" + DateTime.Now.ToString("yyyyMMddHHmmss"); ArrayList arr = new ArrayList(); arr.Add("@shipping_code|" + ShippingCode + ""); arr.Add("@shipping_Company_code|" + ddlCompanyName.SelectedValue + ""); arr.Add("@is_shipping_delivered|0"); cm.sp_execute("spInsert_Shipping_Order_Detail", arr); //Locality for loop for (int i = 0; i < gvLocality.Rows.Count; i++) { GridView gvCompanyName = gvLocality.Rows[i].FindControl("gvCompanyName") as GridView; //Company for loop for (int j = 0; j < gvCompanyName.Rows.Count; j++) { GridView gvSellOrderNo = gvCompanyName.Rows[j].FindControl("gvSellOrderNo") as GridView; string RetailerId = ((Label)gvCompanyName.Rows[j].FindControl("lbl")).Text; //Sell Order for loop for (int k = 0; k < gvSellOrderNo.Rows.Count; k++) { //Product Details Gridview GridView gvProductDetails = gvSellOrderNo.Rows[k].FindControl("gvProductDetails") as GridView; string SO = ((Label)gvSellOrderNo.Rows[k].FindControl("lblSellOrderNo")).Text; int retailer_Id = Convert.ToInt32(RetailerId); //Product Details for loop for (int l = 0; l < gvProductDetails.Rows.Count; l++) { //Warehouse Details Gridview GridView gvWarehouseDetails = gvProductDetails.Rows[l].FindControl("gvWarehouseDetails") as GridView; string ProductId = ((Label)gvProductDetails.Rows[l].FindControl("lblProductId")).Text; //Warehouse Details for loop for (int m = 0; m < gvWarehouseDetails.Rows.Count; m++) { TextBox txtQty = gvWarehouseDetails.Rows[m].FindControl("txtQty") as TextBox; string LastValue = txtQty.Text.Split(',').Last(); if (String.IsNullOrEmpty(LastValue) == false) { string Warehouse_Id = ((Label)gvWarehouseDetails.Rows[m].FindControl("lblWarehouseId")).Text; int warehouse_id = Convert.ToInt32(Warehouse_Id); string Qty = LastValue; //Insert Query for Rs_Shipping_Detail_Mapping ArrayList arr1 = new ArrayList(); arr1.Add("@shipping_order_code|" + ShippingCode + ""); arr1.Add("@retailer_id|" + retailer_Id + ""); arr1.Add("@sell_order_no|" + SO + ""); arr1.Add("@product_id|" + ProductId + ""); arr1.Add("@c_warehouse_id|" + warehouse_id + ""); arr1.Add("@shipping_group|" + ShippingGroup + ""); arr1.Add("@qty|" + Qty + ""); common cm1 = new common(); cm1.sp_execute("spInsert_Shipping_Detail_Mapping", arr1); ////Generating Pdf for Each Sell Order //if (m == gvWarehouseDetails.Rows.Count - 1) //{ // Generate_SellOrderWise_PDf(SO, ShippingCode, ShippingGroup); //} } } } } } } Response.Redirect("../final-shipping-order/?SG=" + ShippingGroup, false); } catch (Exception ex) { ErrHandler.WriteError(ex.Message.ToString(), "Shipping-Order-btnSubmit_Click1()"); cm4.con.Close(); } finally { cm4.con.Close(); } } 

Question:

1. How to remove commas from text fields?

2. The reason for these commas? (Why are commas generated when a button is clicked?)

3. Limit for nested gridview?

Any help would be appreciated.

+5
source share
4 answers

If you have a repeating field of the names form, the values ​​are combined with commas.

So, for example, if you have the following.

 <input type="text" name="name" value=""> <input type="text" name="name" value=""> 

.. Your resulting value in the Request.Form feedback is as follows:

 name=,, 

What's happening.

Here are some possible solutions to your problem, although I have not tested them :)

1) UpdatePanel

From reading, it seems that if you create an UpdatePanel for the network control (< asp:TextBox ID="txtQty" runat="server"></asp:TextBox> ), it fixes this problem. Again, I have not tested this

2) Changing the behavior of DataBind () during Page_Load()

So...

 page_load() { if(!isPostBack()) { // DataBind normally myGridview.DataBind(); } else { //Some intelligent way to remove commas before binding } } 

... But this does not change the fact that ,,,values are published in the first place. So, if you are primarily concerned about aesthetics rather than behavior, you can simply use JS to highlight commas (as previously assumed).

3) JS - Get rid of the comma:

(as suggested here )

 <script type="text/javascript"> $("[src*=plus]").live("click", function () { $(this).closest("tr").after("<tr><td></td><td colspan = '999'>" + $(this).next().html() + "</td></tr>") $(this).attr("src", "images/minus.png"); $("input", $(this).closest("tr").next()).each(function () { this.value = this.value.substring(',', ''); }); }); $("[src*=minus]").live("click", function () { $(this).attr("src", "images/plus.png"); $(this).closest("tr").next().remove(); }); </script> 

Hope this helps :)

[Change] - Verification

I would disable validation using the .keydown () event. In your case, it might look something like this:

 // Bind to each input with id='txtQty', in each row, in the "gridview" with id='gvWarehouseDetails' $("#gvWarehouseDetails tr input[id*='txtQty']").each(function () { $(this).keydown(function (event) { // <-- specifies the specific input // Validation logic goes here... }); }); 
+5
source

The Ajax Control Toolkit is a viable solution, but support for it has become nonexistent. I assume that at this level there is dynamic control. In fact, the grid will display it in certain cases?

In any case, you can add a class value to the field:

 <asp:Textbox id="txtContent" runat="server" CssClass="Validator"> 

Essentially, when the grid adds all of these fields to your page, they will all have a Validator class . This way you can write JavaScript to actually remove the character from the field, for example:

 $('.Validator').on('blur', function() { $(this).replace(',', ''); }); 

As soon as the focus changes, this field will be removed , from the field, as soon as the mouse leaves , it will be removed from the field.

This is one approach, there are many other options to achieve this. This solution is quite easy, fast and easy, so it should be adequate.

Update:


The solution I chose should not require a loop over these fields. Just because blur triggered whenever change or focus is lost in this field. Since you mentioned that , appears when the user clicks in a field. Otherwise, you can check in all fields. All you just need to do is:

 $('.Validator').each(function() { // Will iterate through each field. }); 

That way, you can use JavaScript yourself to validate these fields or use a simple library like Valid8 that will do all the client-side validation. There is no postback, everything is done on the client side before being sent to the server for processing.

Avoid:

  • The update panel is pretty painful and incredibly inefficient. How they work basically, taking your entire page and saving its memory, then executed an Ajax request and refreshed your page and pulled all the contents from memory to place on the page. It is also incredibly difficult to work with the Asp.Net Page Life Cycle .
+4
source

Hardik, how to txtQty.Text bind first? Is this an empty text string?

You use the code string LastValue = txtQty.Text.Split(',').Last(); to try to get rid of the entered comma values ​​or to associate the values ​​with commas? I mean, do you use the same UI culture from the values ​​in the database and application, or do you need to format it before displaying it?

+3
source

I do not know what is going on in your code. But if you want to get rid of Comma (','), then I have to offer you one thing.

Add the AjaxControlToolKit link and register it on the aspx page as shown below:

 <%@ Register TagPrefix="ajaxToolkit" Namespace="AjaxControlToolkit" Assembly="AjaxControlToolkit, Version=[VersionNumber], Culture=neutral, PublicKeyToken=[TokenNumber]" %> 

Or you can contact How to install the AJAX Control toolkit

After you installed the AJAX Control Toolkit, go to your page and in your TemplateField below TextBox txtQty , add FilteredTextBoxExtender , as shown below:

 <asp:TemplateField> <ItemTemplate> <asp:TextBox ID="txtQty" runat="server"></asp:TextBox> <ajaxToolkit:FilteredTextBoxExtender runat="server" InvalidChars="," FilterMode="InvalidChars" TargetControlID="txtQty" /> </ItemTemplate> </asp:TemplateField> 

By adding FilterTextBoxExtender , it will not let you insert characters that are referred to as InvalidChars in the txtQty text box.

+3
source

Source: https://habr.com/ru/post/1204154/


All Articles