|
Dave
I am just learning some C# am not to good at it yet.
I understand what you are saying about the loop but I don't know how to make the change.
Could you help me out with the code?
Thanks
Robert
|
|
|
|
|
Robert
In the code below the send-mail is moved out of the loop.
now just create a try-catch for the moved part
Regards
Michael
using System;
using System.IO;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net.Mail;
public partial class _mailUpload : System.Web.UI.Page
{
protected void Button1_Click(object sender, EventArgs e)
{
string filepath = "d:\\Uploads";
HttpFileCollection uploadedFiles = Request.Files;
SmtpClient smtpClient = new SmtpClient();
MailMessage message = new MailMessage();
MailAddress fromAddress = new MailAddress(txtEmail.Text, txtName.Text);
for (int i = 0; i < uploadedFiles.Count; i++)
{
HttpPostedFile userPostedFile = uploadedFiles[i];
try
{
if (userPostedFile.ContentLength > 0)
{
Label1.Text += "File #" + (i + 1) + "";
Label1.Text += "File Name: " + userPostedFile.FileName + "";
Label1.Text += "File Size: " + userPostedFile.ContentLength + "kb";
userPostedFile.SaveAs(filepath + "\\" +
System.IO.Path.GetFileName(userPostedFile.FileName));
}
//...send mail moved out of the loop...
}
catch (Exception Ex)
{
Label1.Text += "There was an error sending your files ... " + Ex.Message;
lblStatus.Text += "Your email failed to send correctly ..." + Ex.Message;
}
}
// Default is localhost or you can specify a host name or ipaddress of the email server
smtpClient.Host = "localhost";
//Default port is 25
smtpClient.Port = 25;
//From address will be given as a MailAddress Object
message.From = fromAddress;
// To address collection of MailAddress
message.To.Add("rob@mydomain.com");
message.Subject = "Client File Upload System";
// CC and BCC optional
// MailAddressCollection class is used to send the email to various users
// You can specify Address as new MailAddress("admin1@yoursite.com")
//message.CC.Add("admin1@yoursite.com");
//message.CC.Add("admin2@yoursite.com");
// You can specify Address directly as string
//message.Bcc.Add(new MailAddress("admin3@yoursite.com"));
//message.Bcc.Add(new MailAddress("admin4@yoursite.com"));
//Body can be Html or text format
//Specify true if it is html message
message.IsBodyHtml = true;
// Message body content
message.Body = txtMessage.Text + "The following files have been uploaded to the server." + Label1.Text;
// Send SMTP mail
smtpClient.Send(message);
lblStatus.Text = "Your email has been successfully sent.The following files have been uploaded to the server.";
}
#region "Reset"
protected void Button2_Click(object sender, EventArgs e)
{
txtName.Text = "";
txtEmail.Text = "";
txtMessage.Text = "";
Label1.Text = "";
}
#endregion
}
|
|
|
|
|
Thanks for the help Michael and Dave.
I have it working now.
Cheers
Robert
|
|
|
|
|
I'm taking data from a database and feeding it into an application that takes an XML file as input. One of their fields is basically an enumerator value so I created a class that would attach the attribute to the field:
StaticType<int;> contractType;
...
[Serializable]
public class StaticType<T>
{
public StaticType( ) { }
public StaticType( T initialValue )
{
internalValue = initialValue;
initialValue = index;
}
private T initialValue;
private int initialIndex;
[XmlAttribute(AttributeName="staticValue")]
public T InternalValue
{
get { return initialValue; }
set { initialValue = value; }
}
}
The output works great and I get a field as such:
<someDataType staticValue="1" />
Here is the question:
Reading further into the documentation it looks like I might have to pass the value for some reason as well. So I'm puzzled as to how to construct the class so that my output gets created as:
<someDataType staticValue="1">some text value</someDataType>
Any ideas?
modified on Tuesday, February 19, 2008 1:17 PM
|
|
|
|
|
Using Xml serialization, you cannot have that construct. Instead, it would looks something like:
<someDataType staticValue="1"><Value>some text value </Value></someDataType>
You would require another property in your object, named Value (or whatever name you chose).
|
|
|
|
|
Yeh, that was the only solution I saw as well.
Thanks.
|
|
|
|
|
Hi. I have a project, which needs DirectX.AudioVideoPlayback to function and framework 2.0. How can i create an setup file, which would include everything thats need to run that application? The programe also needs some files in subdirectories.
Tnx. Bye
Força Barça!
|
|
|
|
|
|
I'm writing a GUI to run Powershell in C#. All is working and the test command "get-process" returns the output just fine.
There are a couple of peculiarities.
I tried adding a progress bar in the form, but I can't seem to trigger the progressChanged event. I put a breakpoint inside backgroundWorker1_ProgressChanged and the program never reached it while running the get-process command.
I also added an "Abort" button that executes this.backgroundworker1.CancelAsync(), but the output from "get-process" still displays after clicking that button.
Any help would be much appreciated.
-Jay
|
|
|
|
|
You'll need to call the ReportProgress method inside your DoWork (or from another function called by DoWork) method.
Dave
|
|
|
|
|
Thanks! That fixed the progress bar issue.
Any idea why the cancel button doesn't work?
-Jay
|
|
|
|
|
BackgroundWorker has a WorkerSupportsCancellation property that defaults to false - make sure it's set to true.
Dave
|
|
|
|
|
Yup I did set that property to "true".
I'm thinking that maybe a command like "get-process" actually finishes before I can even click the "Abort" button, and that the delay in execution time might be from generating the output. You think that's possible?
-Simon
|
|
|
|
|
Yes - very possibly. You could use break points and/or some Console.Write("xxx has completed") to figure out what's happening. Better still, once your get-process has completed set the Abort button to Enabled = false;
Dave
|
|
|
|
|
In your worker method you need to check the CancellationPending[^] property and abort the process if it's set to true.
Scott.
—In just two days, tomorrow will be yesterday.
—Hey, hey, hey. Don't be mean. We don't have to be mean because, remember, no matter where you go, there you are. - Buckaroo Banzai
[ Forum Guidelines] [ Articles] [ Blog]
|
|
|
|
|
Hi All,
I have a maskedtextbox with some values for the phone number: +49_________ .
when i come with the tabkey into the textbox, the cursor is located on the first character:
|+49_________ . Now how can i make it so that the cursor locates ofter the thirth char:
+49|_________ ????
|
|
|
|
|
TextBox.SelectionStart = 3;
Sounds like somebody's got a case of the Mondays
-Jeff
|
|
|
|
|
Is there an event that raise if the collection of ListViewItems in the ListView has been changed?
modified on Tuesday, February 19, 2008 11:22 AM
|
|
|
|
|
Looking at the documentation it appears that you do not have such an event. But since the ListView can take a list of objects, you can have your objects either expose an event or a IsDirty property to indicate if values have changed within them.
|
|
|
|
|
Do you mean the collection being changed (i.e. an item added) or an item in the collection?
If the first then not specifically for an Item(s) being added. The Invalidated event is raised but it's raised for other things too so may not be useful.
You could create your own class that inherits from ListView.ListViewItemCollection and override the Add method and raise your own event in there, or simply create your own event elsewhere and raise it every time you call the Add or AddRange methods.
You may need to do the same for the remove methods and clear methods as well.
Dave
|
|
|
|
|
I also tried to inherit an own class from ListViewItemCollection and raise a Changed event if any item were added or removed, but i don't know how to set the inherited class to the ListView.Items collection.
Therefore i inherit an own ListView2 from the ListView class and tried to set the Items:
base.Items = new ListViewItemCollection2();
But base.Items is readonly...
|
|
|
|
|
Hi ho
I'm new to this forum, and I hope I'll be using it alot in the future. Now my question isn't a technical one about programming, but more about the structure of a menu. You know these very familiar menus where you got File, Edit, View, ... I've got a question about the first one: File. Almost all applications I see use this one, but sometimes it seems to be losing its use even in the widest meaning of the word 'file'.
For example, Windows Live Messenger (or MSN Messenger in the past), uses File. When you open it you get actions like logout, or change your status. Even if you think of file as the file of contacts in your messenger, the actions are not corresponding.
Another example, Privoxy. It has nothing to do with manipulating files or whatever, it's used as a proxy program. Still it has the dropdown menu File, with only one action: Exit.
File seems to be used as a general keyword where you put all the general actions for your application, like quitting it.
So am I right if the menu word 'File' is actually being abused in a way? And is there another better keyword to be used for programs that have nothing to do with file manipulation?
Thanks in advance
|
|
|
|
|
It's a standard that people are used to, so they know where to go for general operations even if they're not actually file related.
I often change this for the name of the application and people rarely notice - they just seem to go for the first menu, but this is non-standard.
Dave
|
|
|
|
|
Hi,
for a long time there have been guidelines in place about GUI design; both Apple and
Microsoft early on suggested to always have File, Edit, View menus to the left, and Help
to the right.
The File menu is supposed to hold actions pertaining to the whole document (hence New,
Open, Save, ...) and the whole app (Preferences, Quit, ...). The Edit menu normally
holds actions on the document control, the View menu controls how things are shown.
There are guidelines/conventions for the shortcuts too (such as CTRL/C = copy).
I'm all in favor of these GUI guidelines, since they tend to reduce the discomfort
for novice users, and increase the efficiency for all users.
However there are applications (such as games) where the menu names don't really fit
the app domain; then it's up to you to cope with that.
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
I'll just choose something else then. I think it's enough to be the first dropdown menu for people to know that's the general tab. I'll take something like 'Program' or so.
|
|
|
|