|
|
Hello. First of all I'm programming in VB.NET/ASP.NET doing a page for a website. Now, to my question....
I have a simple array of integer numbers (15 characters in length) which can hold up to 2000 items. What I basically need to do is output these numbers to a PDF file I'm creating on the fly and I can only fit a certain amount of numbers per page. What I need to do is just output these on each page in numerical order vertically NOT horizontally. Based on page size restrictions, the amount of numbers I can output per page is 19 rows x 7 columns (or 133 items total).
Now, I already have the PDF creation going fine, including adding more pages as there's more numbers being added, etc. It's just the sorting of these numbers that I'm outputting I'm having trouble with. What I'm doing currently (which is archaic), since I can only output horizontally at the moment, is outputting the first number, then skipping the next 18, and then outputting the next number, then skipping the next 18, etc. Once I get to the 7th number (1st row, 7th column), I output it, skip backwards to the 2nd number in the array, and output it as I'll now be in the 2nd row (2nd row, 1st column). I keep doing this until all numbers in the array are output. The only problem is that, other than being finicky and definitely not an efficient way of doing it, is if the array has fewer than 133 numbers (or if by chance there's fewer than 133 numbers on any one page), the output structure is all messed up.
For more info on what I'm currently doing, here's some code examples:
Dim theTagArray(2000) As String<br />
' theTagArray is filled before this next section...<br />
<br />
Dim thecount2 As Integer = 0<br />
Dim thecount3 As Integer = 0<br />
Dim thenum As Integer = 19<br />
' Nice mess to print tags in numeric order down each column, left to right...<br />
' Basically, start with first element, then skip 18 and put next, skip 18 put next, etc. and so forth...<br />
' pdfText2a.Add is the function that's basically outputting the array element... to the PDF...<br />
If thecount3 = 7 Then<br />
thecount2 += 1<br />
thecount3 = 0<br />
pdfText2a.Add(theTagArray(thecount2 + (thecount3 * thenum)) & " | ")<br />
thecount3 += 1<br />
Else<br />
pdfText2a.Add(theTagArray(thecount2 + (thecount3 * thenum)) & " | ")<br />
thecount3 += 1<br />
End If
I want it to look kind of like this:
982000018301450 | 982000018561709 | ...<br />
982000018561265 | 982000018561724 | ...<br />
...
Though 7 across, 19 down.
So, this is why I'm asking if there's a way to output an array vertically instead of horizontally in either a slightly more efficient way than I'm doing it, or by using a much better method altogether. Please help if you can. Thanks for your help.
"Only two things are infinite, the universe and human stupidity, and I'm not sure about the former." - Albert Einstein
|
|
|
|
|
There is no way I see to display an array vertically, but you can surely try putting your data in some DataTable vertically with an array and then print horizontally from the table to match your required output
Keep DotNetting!!
GeekFromIndia
|
|
|
|
|
Oh, I wish it were that easy. But due to how the code works on creating the PDF pages, the only way I know of is to extract the elements of the array one by one. Unless, I guess, I somehow created several different datatables or something to span across the several PDF pages, but I would be confused on how to even go about that. I 'could' use something else other than an array to store the numbers, but just not sure what would be best here.
Any other suggestions? Thanks.
"Only two things are infinite, the universe and human stupidity, and I'm not sure about the former." - Albert Einstein
|
|
|
|
|
Use a multi-dimensional array: Array(2000,7)
One dimension is the verticle and one dimension is you horizontal.
|
|
|
|
|
A 2D array is the easiest solution, I reckon, but for future reference, I use a Repeater when I need to output data in a custom format. Then you can do stuff like this easily, because you have full control.
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
Yes, I understand a 2D array would probably be easiest, but how do I make it work? Remember, as I'm creating this PDF, I can only have 19 rows and 7 columns per page (133 numbers total per page). So if I have 2000 numbers, I can't just fill a 2D array up completely with that as them the order would be screwed up if I tried to split the array up during the output onto the page. Because I need to have the first 19 numbers on the first column, then the next 19 numbers on the 2nd column, the 3rd set of 19 numbers on the 3rd column, etc. until I get through the first page. Then I create a new page and start over except I'm technically on the 8th set of 19 numbers starting at column 1 again on this new page. This goes on until all numbers are output for however many pages. So it's like I would need to create a new 2D array per page, on the fly, making sure I don't overlap or skip any numbers (which are being pulled from my SQL database) and then output each number out from that array.
So this is where I'm stuck as either I'm making it way too difficult or I'm missing something. Thanks for your help.
"Only two things are infinite, the universe and human stupidity, and I'm not sure about the former." - Albert Einstein
|
|
|
|
|
If you had a 2D array then you can use a DataGrid to display the data. Or you can just iterate over the rows and output them, just as if you were writing printing code.
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
Excuse me for my inexperience, but how can I have a datagrid do this since all I have are numbers? I'm not binding certain columns or anything, all of the data is the same, a bunch of numbers. So how I normally would create some bound columns and bind that to a SQL query which would contain certain fields of data matching the bound columns, all I have now is technically one field of data which needs to span 7 columns and go through 19 rows and this needs to happen on a per page basis for the PDF file I'm creating using itextsharp.
I think I'm just making this much harder than it is but I still see no easy solution. I have a bunch of numbers in a database (all in a single field) and I need to print them on the screen in order vertically per column spanning over pages I'm creating via a PDF file. I wouldn't think it could be hard, but everything I try is failing.
Thanks again.
"Only two things are infinite, the universe and human stupidity, and I'm not sure about the former." - Albert Einstein
|
|
|
|
|
An array is a perfectly valid data source for any data bound control.
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
*sigh* Nevermind, but thanks for your help.
"Only two things are infinite, the universe and human stupidity, and I'm not sure about the former." - Albert Einstein
|
|
|
|
|
Hi Everyone,
how can change the date format. my default date formate is dd.mm.yyyy, i need to change mm/dd/yyyy.
i am using the function to change, but its not working properly.
private DateTime Getdate(string date)
{
DateTime dt = new DateTime();
if (date.Contains("/"))
{
char cPipeSign = '/';
string[] str = date.Split(cPipeSign);
dt = new DateTime(int.Parse(str[2]), int.Parse(str[0]), int.Parse(str[1]));
}
else if (date.Contains("."))
{
char cPipeSign = '.';
string[] str = date.Split(cPipeSign);
dt = new DateTime(int.Parse(str[2]), int.Parse(str[0]), int.Parse(str[1]));
}
return dt;
}
it returns the dd.mm.yyyy
|
|
|
|
|
udaymohan wrote: how can change the date format. my default date formate is dd.mm.yyyy, i need to change mm/dd/yyyy.
i am using the function to change, but its not working properly.
Don't double post - its rude. You only asked this question a few minutes ago. You should continue your original thread.
Paul Marfleet
"No, his mind is not for rent
To any God or government"
Tom Sawyer - Rush
|
|
|
|
|
Hello,
I have the following code and I am not sure where I need to place it. I have three webpages Default.aspx, Add.aspx (this is the page used to submit information), and Confirm.aspx. Do I need to place it in a new class/business object or can I put it in the Add.aspx.cs page? I am using stored procedures ("InsertRequest") in this project. Also if the code is wrong somewhere please correct me. Thanks!
string connectionString = "Data Source = server02; Integrated Security=True; Initial Catalog=Database";
using SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand command = new SqlCommand("InsertRequest",
connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("@Summary",
txtSummary.Text));
command.Parameters.Add(new SqlParameter("@EmailAddress",
txtEmail.Text));
connection.Open();
command.ExecuteNonQuery();
}
}
|
|
|
|
|
I can't see any obvious problems with your code. As to whether it works, I suggest you try it and see what happens.
You can place the code anywhere you like - it will still work. The SOC[^] principle however recommends that presentation, business and data access logic should be physically separated in the codebase. Placing business or data access logic in your ASPX pages isn't a big issue on a small project where 1 developer is doing the work. For larger, multi-developer projects this approach soon becomes unmanageable, leading to code redundancy and maintenance problems.
To better understand the importance of SOC, I suggest you look at the new ASP.NET MVC[^] framework which is based around this principle.
Paul Marfleet
"No, his mind is not for rent
To any God or government"
Tom Sawyer - Rush
|
|
|
|
|
|
I've been investigating the MVC framework over the Easter weekend, and it looks like it could be a genuinely workable alternative to the traditional Web Forms model. Scott Guthrie's articles and the videos on the Microsoft ASP.NET site have been very useful. Form validation looked like it might be a problem, until I came across the MVC Validation Toolkit[^].
Paul Marfleet
"No, his mind is not for rent
To any God or government"
Tom Sawyer - Rush
|
|
|
|
|
Scott's blogs are good, but as I point out, his examples are based on previous releases and won't work with the latest preview 2 release. The validator article look interesting. thanks
only two letters away from being an asset
|
|
|
|
|
Mark Nischalke wrote: Scott's blogs are good, but as I point out, his examples are based on previous releases and won't work with the latest preview 2 release.
The principles set out in the articles still hold. You just have to work around the changes made to the framework between Previews 1 & 2.
Paul Marfleet
"No, his mind is not for rent
To any God or government"
Tom Sawyer - Rush
|
|
|
|
|
pmarfleet wrote: For larger, multi-developer projects this approach soon becomes unmanageable, leading to code redundancy and maintenance problems.
Yep thats exactly what I am going for something for a larger, multi-developer project. This project is starting out small but will definately be growing and I will need to setup this website where it can be managed well. Are there other alternates to the MVC framework? I might still go the route of Database (with stored procedures)-->Business Class-->Interface. Ideas/opinions/suggestions Thanks!
|
|
|
|
|
Programmer in the Making wrote: Are there other alternates to the MVC framework?
The ASP.NET MVC Framework is still in a preview release and probably isn't stable enough yet to consider building commercial applications with. However it's interesting to investigate and see where the technology is going.
Your best bet at the moment is create an ASP.NET Web Forms website with a 3-tier architecture[^]. The presentation, business logic and data access code would reside separate projects. Separating the different concerns makes it easier to manage the codebase as the application grows. It also means that you can create other presentation layers (mobile, Win32, WPF) that use the same business layer, or you can swap a SQL Server-based data access layer to an Oracle, MySQL one without having to rewrite your business or presentation logic.
You might want to look at using an ORM tool like SubSonic[^] to manage the creation of your data access layer.
Paul Marfleet
"No, his mind is not for rent
To any God or government"
Tom Sawyer - Rush
|
|
|
|
|
Hi,
I have a scenario in aspx page. when user click on Rates hyperlink, it should disply all the rates by countrywise. please click on below link. I have to implement like that in asp.net 2.0. when user click on A the page is coming to top and display all the list starting with A. if user click on H it should display countries starting with H.
Note: the data(country list) is coming from Database.
http://www.skype.com/prices/callrates/[^]
Thanks,
Chakri.
modified on Monday, March 24, 2008 10:05 AM
|
|
|
|
|
The letters of the alphabet are just a series of HTML bookmark anchor tags. The bookmarks are pure HTML and have nothing to do with ASP.NET. You can see how they work by examining the source of the page.
Paul Marfleet
"No, his mind is not for rent
To any God or government"
Tom Sawyer - Rush
|
|
|
|
|
ok. How to display the country list? list has to come from Database. is it possible to display in Datagrid? is there any other solution?
Thanks
|
|
|
|
|
Again, if you look at the HTML source for the page, you can see that there is a separate Table element for each letter of the alphabet. You could produce this output in ASP.NET using nested repeater controls[^]. The master repeater would render the header information for each letter, including the alphabet bookmark links. The child repeater would render out a table containing the price information for each letter.
Paul Marfleet
"No, his mind is not for rent
To any God or government"
Tom Sawyer - Rush
|
|
|
|
|