I wish to implement a fairly simple CSV checker in my C#/ASP.NET application - my project automatically generates CSV's from GridView's for users, but I want to be able to quickly run through each line and see if they have the same amount of commas, and throw an exception if any differences occur. So far I have this, which does work but there are some issues I'll describe soon:
int? CommaCount = null;
StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); String Str = null; //This loops through all the headerrow cells and writes them to the stringbuilder for (int k = 0; k <= (grd.Columns.Count - 1); k++) { sw.Write(grd.HeaderRow.Cells[k].Text + ","); } sw.WriteLine(","); //This loops through all the main rows and writes them to the stringbuilder for (int i = 0; i <= grd.Rows.Count - 1; i++) { StringBuilder RowString = new StringBuilder(); for (int j = 0; j <= grd.Columns.Count - 1; j++) { //We'll need to strip meaningless junk such as <br /> and Str = grd.Rows[i].Cells[j].Text.ToString().Replace("<br />", ""); if (Str == " ") { Str = ""; } Str = """ + Str + """ + ","; RowString.Append(Str); sw.Write(Str); } sw.WriteLine(); //The below code block ensures that each row contains the same number of commas, which is crucial int RowCommaCount = CheckChar(RowString.ToString(), ','); if (CommaCount == null) { CommaCount = RowCommaCount; } else { if (CommaCount!= RowCommaCount) { throw new Exception("CSV generated is corrupt - line " + i + " has " + RowCommaCount + " commas when it should have " + CommaCount); } } } sw.Close();
And my CheckChar method:
protected static int CheckChar(string Input, char CharToCheck) { int Counter = 0; foreach (char StringChar in Input) { if (StringChar == CharToCheck) { Counter++; } } return Counter; }
Now my problem is, if a cell in the grid contains a comma, my check char method will still count these as delimiters so will return an error. As you can see in the code, I wrap all the values in " characters to 'escape' them. How simple would it be to ignore commas in values in my method? I assume I'll need to rewrite the method quite a lot.
I have been attempting to find a solution for my phone number formatting problem for 2 hours now and I am not getting any closer. My 10 digit phone number is stored as a varchar(14) without any formatting (just 10 digits).
Here is the code to format the phone number in a gridview:
[Code]....
why the formatting won't work? It just displays the 10 numbers with no formatting.
In my gridview I have a datetime columns and couple of decimal number columns. Lets say I have a datetime value like this 19.03.2011 00:00:00 and I want it to seem like 19.03.2011. And I would like 2 decimal digits only. How can I achieve this?
My requirement is, I have one text box and that text box accepts US Format 10 digit phone number like 555-555-5555. I want when user enter 5555555555 it automatically convert this in 555-555-5555 and if he enter some wrong number then show him error and if dont want to enter any thing then there should not be any error.
<th style="width: 150px">Home Telephone </th> <td> <asp:TextBox ID="txtHome" runat="server" MaxLength="12" ValidationGroup="vUserDetailsB" Width="252px" CssClass="txtBox" TabIndex="19"></asp:TextBox> <cc1:MaskedEditExtender ID="meeHome" runat="server" TargetControlID="txtHome" AutoComplete="false" MaskType="None" Mask="999-999-9999" ClearMaskOnLostFocus="true" InputDirection="LeftToRight" /> <%-- <cc1:MaskedEditValidator ID="mevHome" runat="server" ControlToValidate="txtHome" EmptyValueMessage="Telephone Number is required." ValidationGroup="vUserDetailsB" ControlExtender="meeHome" InvalidValueMessage="Valid Telephone Number is required." IsValidEmpty="false" ValidationExpression="^d{3}-d{3}-d{4}$" Font-Size="8pt" />--%> <asp:RegularExpressionValidator ID="revHome" runat="server" ControlToValidate="txtHome" Display="Dynamic" ErrorMessage="Invalid Home number. Number should be in the format: 555-123-4567" Font-Size="8pt" SetFocusOnError="True" ValidationExpression="d{3}-d{3}-d{4}" ValidationGroup="vUserDetailsB" Width="100%" meta:resourcekey="txtHomeResource1"></asp:RegularExpressionValidator> </td>
Whats happenening, If i entered any thing like 5555555555 and it is coverting to this 555-555-5555 format which is correct and then when i moved to another textbox it is throwing error "Invalid Home number. Number should be in the format: 555-123-4567" and this format changes to 5555555555 and its not going ahead.
I have a text field that users enter information into a database (SQL Server). They are entering as little as a few sentances to multiple paragraphs. I can successfully display the data on my webpage, but the text field is not formatted very nicely. The output is all smashed together like one big paragraph. Ironically, when I also display the text as a tool tip it outputs as multiple paragraphs like it was entered. How can I format the output in the datalist to create a more readable text field? My datalist field is as follows:
I've a web form whereby my invoice number is "CS00x" whereby x is the auto number supposedly to be generated using the following codes:
[Code]....
However, when the first time I login and try if the invoice number can be inserted into the database in access, it would display CS0001 which is the result I want. So, I went on to try out using another account to login.But it gives me error "The changes you requested to the table were not successful because they would create duplicate values in the index, primary key, or relationship. Change the data in the field or fields that contain duplicate data, remove the index, or redefine the index to permit duplicate entries and try again."Also, I found out that it can only generate CS001 but not CS002 so on.
I am trying to take user supplied raw numeric values (these numbers dont have decimal point) and correctly format the values to their correct currency display.
eg: user enters 2341 the routine would use regex to format it to 23.41
I cant find a way to do this. What I have tried is this:
[Code]....
It doesnt work.... sNjunk always comes out 299 instead of 2.99.Anyone out there that can help me with this? or point me in the right direction?
I need to generate a Unique Reference number that has 7 digits.
It should be formatted in the following way:
1st: B (Ball), G (Gift), C (Cat)
2nd: represents year of booking A(2010), B(2011),C(2012), etc
3rd: represents the month of booking J(Jan),F(Feb),M(Mar),A(Apr),Y(May), U(Jun), L(Jul),G(Aug), S(Sep),O(Oct),N(Nov),D(Dec)
4th: days of booking A(1st) - Z(26th), 1(27th) - 5(31st)
5,6,7th: These are counters for the number issues each day. Each can be A-Z,0-9 giving a total of 46,656 combinations. So 0 is first, then 1, 2, 3, 4, 5, 6, 7, 8, 9, A-Z, then 00 to 0Z, then 10 to 1Z, then 20 to 2Z, etc
Now , the 1st Digit is a Character that I generate based on a condition and that shouldn't be a problem.
I have a web user control with DataList control in it. In my .aspx page, I have a report header, an empty panel as a place holder, a report footer.In my .aspx.vb file, I'll loop through a list of departments. Within each department, I'll load a label to display the department name and the user control for the data, and add both the label and user control to the panel. So there are two variables: the number of departments and the number of records in a user control.
Now I need to display the current page number and the total page number in the report footer. Is it doable? How? I'm thinking of this approach: declare a page variable count, count the number of department name labels and the number of records in a user control. When the total count reaches a number, such as 20, I'll break the page. This way, I can get the the page current number and the total number of pages. But how to add a page break to an asp.net page?
i want datalist to show only 6-8items ,as these datalist is connected to datasource which has more than 20 items..
like in facebook,we have lots of friends but in friend box only 6 friends is shown and when we click that we go to next page which display all list of friends...
I have a textbox and user enter a number in it. I want to allow 2 decimal digits. For example; number: 12,256 -> I want to allow 12,25 not 3 digits after comma(2 number after comma). How can I do it?
on my web form i have a standard textbox.after the user enters a number i want to set it's format so 12500 - will be set to 12,500 and so on.how can i do it?
I have a gridview with a column of numbers which is displayed with the following format
DataFormatString="{0:N}"
The problem is that it shows with a decimal point and I need to have a comma instead. This is a Europen website. I tried searching for this and everything about commas has to do with thousands separation.
I want to format a number when it displays in a textbox.For example if it is 1234567.0000 in database, it should be displayed as 1,234,567 in my textbox.I tried the below one but its not working.textbox1.text = String.Format("{0:0,0}", dt1.Rows(0).Item("Volume"))
I have a number like this-1.78978E+38 and I want to format it to 2 decimals, I use the format property with N, F with no results it gave a monster number like -178,977,800,000,it worked with numbers like -115.55, the data type of the field is float, how can I format it to 2 decimals
My title says it all, I am looking to see if there is any built in class/function that basically takes a number and gives back the number in letters such as 10 to ten.