Passing and retrieving StringQuerys - c#

I have to pass two query strings that i've entered and display them on another page.
Here is the code where i attempt to pass them.
protected void btnDisplay_Click(object sender, EventArgs e)
{
string vacations = Session["Vacations"] as string;
string hobbies = Session["Hobbies"] as string;
string classes = Session["Classes"] as string;
lblDisplay.Text = "Your favorite vacations spots are: " + vacations + "<br />" +
"Your hobbies are: " + hobbies + "<br />" +
"Your IT Classes are: " + classes;
}
protected void btnRedirect_Click(object sender, EventArgs e)
{
string vacations = Request.QueryString["vacations"];
Response.Redirect("Summary2.aspx?vacations=" + vacations);
}
Here is where I attempt to retrieve and display them.
protected void btnDisplay_Click(object sender, EventArgs e)
{
lblDisplay.Text = Request.QueryString["vacations"];
}
I can't figure out what I am doing wrong. When i hit the Display button on my 2nd page, nothing shows up. Which I am assuming I am not passing the information correctly.
PS The information that is trying to be passed is the session states on the stop of my code. I only need to send the vacations and the classes through the query string.

you need to take the vacations value from session. you're reading it from the query string on the first page.
protected void btnRedirect_Click(object sender, EventArgs e)
{
string vacations = Session["vacations"] as string; // this line
string classes = Session["vacations"] as string;
Response.Redirect("Summary2.aspx?vacations=" + vacations + "&classes=" + classes);
}

I think you want to send two parameters. (Your question is a little confused)
I hope this can help you.
So, In your webForm 1, add one button and write this small code:
Session["Vacations"] = "sample 1";
Session["variable2"] = "variable 2";
string vacations = Session["Vacations"] as string;
string variable2 = Session["variable2"] as string;
string myquery = vacations + "/" + variable2;
Response.Redirect("WebForm2.aspx?myquery=" + myquery);
In your webForm 2, In the "load" event add this code:
string data = Request.QueryString["myquery"];
string[] words = data.Split('/');
foreach (string word in words)
{
Response.Write(word);
}
It is a way to pass two parameters between two web pages.

Related

How to pass string value to another form's load event in C # [duplicate]

This question already has answers here:
How can we pass data from one opened form to another?
(2 answers)
Closed 5 years ago.
(I'm currently taking c#, but I've never taken any of the prerequisite classes, so please forgive my limited understanding.)
The answers I've seen so far aren't what I need for this project.
This is what I have so far:
//Form1
private void printToolStripMenuItem_Click(object sender, EventArgs e)
{
string strStatus = "";
if (rdoMarr.Checked)
{
strStatus = "Married";
}
else
{
strStatus = "Single";
}
string strPrint = "Marital Status = " + strStatus + "\n Pay Period =" + cbPayPd.Text + "\n Dependents =" + cbAllow.Text + "\n Gross = " + txtGross.Text + "\n Fit = " + txtFit.Text + "\n Soc = " + txtSoc.Text + "\n Med = " + txtMed.Text + "\n Net = " + txtNet.Text;
var form2 = new Print(strPrint);
form2.Show();
}
What needs to go onto my Form2 to receive this string?
There are many ways to do this. The one below is not what I would recommend, but I think it's the easiest to understand.
Here's one way to do this:
Create a public static property on your Form1 class to hold the value of this variable
Use the property from step #1 for the MessageBox text
Create a method that will update this property with the text you want
Call the method in #3 when your form loads
Create a common EventHandler method that calls the method in #2
Hook up the TextChanged event of the TextBox objects whose text is used in your string to the common EventHandler created in #4
Reference the property in #2 when your Form2 loads
My example assumes you have a Label named label1 on the Form that you want to update with the text
Here's how:
public partial class Form1 : Form
{
// 1. This class-level variable will hold our string
public static string PrintMessage { get; private set; }
// 2. Reference your strPrint variable for the MessageBox as you were before
private void printToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show(PrintMessage);
}
// 3. This method will update our string with values from TextBoxes
private void UpdateText()
{
PrintMessage = "Gross = " + txtGross.Text + "\n Fit = " + txtFit.Text +
"\n Soc = " + txtSoc.Text + "\n Med = " + txtMed.Text +
"\n Net = " + txtNet.Text;
}
// 4. Call our update method when the Form loads
private void Form1_Load(object sender, EventArgs e)
{
UpdateText();
}
// 5. This EventHandler just calls our update method
private void CommonTextChangedEvent(object sender, EventArgs e)
{
UpdateText();
}
// I have a `button1` on my Form1, and clicking this button shows Form2
private void button1_Click(object sender, EventArgs e)
{
var form2 = new Form2();
form2.Show();
}
Now, hook up the event handler. The easiest way is:
One at a time, select one of the textboxes whose Text is used in our string
In the Properties window, click the Events button (looks like a lightning bolt)
Choose the TextChanged event, and assign our new method to it
Now, in your Form2 class, you should be able to reference the Form1 property you created in #1:
public partial class Form2 : Form
{
private void Form2_Load(object sender, EventArgs e)
{
label1.Text = Form1.PrintMessage;
}
To test it, just run the project, change the text in the text boxes, and click the button to load Form2

Creating and calling cookies

I have to create a cookie and then retrieve the cookie that was stored.
How do I go about doing this? The cookie that is being stored, has to have information that I typed in on my Hobbies page that is being displayed on the Summary page.
I have to save the cookies, then redirect to Summary2 and call the cookie that was stored when i hit a button. Here is the code i have so far that i believe correlates with what I am asking
protected void btnDisplay_Click(object sender, EventArgs e)
{
string vacations = Session["Vacations"] as string;
string hobbies = Session["Hobbies"] as string;
string classes = Session["Classes"] as string;
lblDisplay.Text = "Your favorite vacations spots are: " + vacations + "<br />" +
"Your hobbies are: " + hobbies + "<br />" +
"Your IT Classes are: " + classes;
}
protected void btnRedirect_Click(object sender, EventArgs e)
{
Response.Cookies["Hobbies"].Value = hobbies;
Response.Cookies["userName"].Expires = DateTime.Now.AddDays(30);
HttpCookie aCookie = new HttpCookie("lastVisit");
aCookie.Value = DateTime.Now.ToString();
aCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(aCookie);
Response.Redirect("Summary2.aspx", true);
}
and here is what i have for retreiving the cookies on my Summary2 page...
protected void btnDisplay_Click(object sender, EventArgs e)
{
if (Request.Cookies["userName"] != null)
lblDisplay.Text = Server.HtmlEncode(Request.Cookies["userName"].Value);
if (Request.Cookies["userName"] != null)
{
HttpCookie aCookie = Request.Cookies["userName"];
lblDisplay.Text = Server.HtmlEncode(aCookie.Value);
}
}
I mainly do not know how to store the information that was entered in my Hobbies page. Any help with this will be greatly appreciated. Thank you!
put the "Cookie" in your Site.Master and you can access it anywhere.
I figured out what I was doing wrong. I had the cookies method in the wrong button command and in my Summary2 i had it calling the wrong cookie name.

wrapping strings around each new line in a rich text box using C#

I have 2 rich text boxes in my C# Winforms applications called, richtextbox1 and richtextbox2 I also have a button called button1. The idea is that when the end user pastes in a list of values into richtextbox1 eg,
C1
C2
C3
C4
The result of richtextbox2 should be: (this is what i want help with)
IN ('C1','C2','C3', 'C4')
This is what I have so far:
private void button1_Click(object sender, EventArgs e)
{
string strValues;
strValues = richTextBox1.Text;
//MessageBox.Show(strValues);
string strInStatement;
strInStatement = richTextBox2.Text;
List<string> idsList = new List<string>() { strValues };
string whereClause = string.Join(",", idsList).ToString();
richTextBox1.Lines = idsList.ToArray();
foreach (string value in idsList)
{
MessageBox.Show(value);
}
}
You can try this :
private void button1_Click(object sender, EventArgs e)
{
var textInEachLine = richTextBox1.Text.Split(new string[] {"\n"}, StringSplitOptions.RemoveEmptyEntries);
string whereClause = string.Join("', '", textInEachLine).ToString();
MessageBox.Show(" IN ( '" + whereClause + "')");
}
This code will remove empty lines if any, and wrap text in each line with single quotes.
Try This :
private void button1_Click(object sender, EventArgs e)
{
string whereClause = String.Join("','", richTextBox1.Text.Split(new string[] { "\n" }, StringSplitOptions.None));
richtextbox2.Text = (" IN ( '" + whereClause + "' )");
}
Try This Code
private void button1_Click(object sender, EventArgs e)
{
string whereClause = String.Join("','", richTextBox1.Text.Split(new string[] { "\n" }, StringSplitOptions.None));
MessageBox.Show(" IN ( '" + whereClause + "')");
}

Textbox value in other textbox by clicking button not correct

This program have a link which is fixed and never change. And it contains 5 textboxes. The fixed link is:
<seite>utm_source=<website>_<page>_de&utm_medium=banner&utm_campaign=<kampagne>&utm_content=<format>
Every value in <> should be changed by textbox value. Here you got an image of my little program:
Now my problem is: the first value is correct, but the other values aren't. So for example, if i type in second texbox: "website" it does not only replace <website> with "website". it replaced <website> with System.Windows.Forms.TextBox, Text: website.
My Code I tried:
private void btn_SendAll_Click(object sender, EventArgs e)
{
txt_FinishLink.Text = txt_Site.Text + "utm_source=" + txt_Website + "_" + txt_Page + "_de&utm_medium=banner&utm_campaign=" + txt_Campaign + "&utm_content=" + txt_Format;
}
As pointed out in the comments, the Text property of the TextBox needed to be used:
txt_FinishLink.Text = txt_Site.Text + "utm_source=" + txt_Website.Text + "_" + txt_Page.Text + "_de&utm_medium=banner&utm_campaign=" + txt_Campaign.Text + "&utm_content=" + txt_Format.Text
Text will return the string of characters in the specified TextBox.
private void btn_SendAll_Click(object sender, EventArgs e)
{
txt_FinishLink.Text = txt_Site.Text + "utm_source=" +
txt_Website.Text + "_" +
txt_Page.Text + "_de&utm_medium=banner&utm_campaign=" +
txt_Campaign.Text + "&utm_content=" +
txt_Format.Text;
}
Look at string.Format though, it makes it much easier to see the format of the new url:
private void btn_SendAll_Click(object sender, EventArgs e)
{
txt_FinishLink.Text = string.Format(
"{0}utm_source={1}_{2}_de&utm_medium=banner&utm_campaign={3}&utm_content={4}",
txt_Site.Text, //{0}
txt_Website.Text, //{1} etc.
txt_Page.Text,
txt_Campaign.Text,
txt_Format.Text);
}
Then you may want to consider encoding the text before placing in the URL, see this answer https://stackoverflow.com/a/16894322/360211

Public override string toString, ArrayList and Listbox output in multiplelines?

I've been struggling with this C# problem all night.
I have a override ToString(), which is working fine, and I can put my data out in a ListBox. But as the data is very long, with a bunch of classes, the output becomes long.
I wanted to be able to break my ListBox output into multiplelines.
Here is the override in the class file:
//ToString
public override string ToString()
{
return "Name " + firstName + lastName + ". Nationality " + nationality + ". Lives in " + address + " " + zipCode + " " + city + " " + country + "."//
+ " Height is " + height + " meters. Hair color is " + hairColor + " and eye color is " + eyeColor + ". Specialmarkings: "//
+ specialMark + ". Is associated with " + association + ". Codename is " + codeName + "Photo (filename): " + photo;
}
Here is the index code:
public partial class Index : System.Web.UI.Page
{
static ArrayList personarraylist;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
personarraylist = new ArrayList();
}
}
protected void ButtonCreate_Click(object sender, EventArgs e)
{
//create new object
Person p = new Person(TextBox1FirstName.Text, TextBox2LastName.Text, TextBox3Nation.Text, TextBox4Address.Text, //
TextBox5City.Text, TextBox7Country.Text, //
TextBox10HairColor.Text, TextBox11EyeColor.Text, TextBox12SpecialMark.Text, TextBox13Asso.Text, TextBox14Codename.Text, TextBox15Photo.Text, //
Convert.ToDouble(TextBox9Height.Text), Convert.ToInt32(TextBox6ZipCode.Text), Convert.ToInt32(TextBox8Pass.Text));
//add object to arraylist
personarraylist.Add(p);
}
protected void ButtonShow_Click(object sender, EventArgs e)
{
//clear list box
ListBox1.Items.Clear();
//loop through Arraylist
for (int i = 0; i < personarraylist.Count; i++)
{
ListBox1.Items.Add(personarraylist[i].ToString());
ListBox1.Items.Add("");
TextBox1.Text = "";
}
}
}
Is it possible to break the output in multiplelines in a ListBox?
I was trying to inject some html breaktags in the override return, but these get stripped, yeah this is a webapplication.
Thanks in advance for your time.
PS I am a newbie in C# (Student), so be kind ;)
UPDATE:
Hi again all, thx for the help, I already tried with Environment.Newline and the other solutions, but these seem to be overlooked when displaying the text in a ListBox. I can see the breakpoints in the codebehind, but in the browser the listbox still just keeps it all in one line. So I decided to use a TextBox instead, which breaks the text automaticly and where I point out.
//loop through Arraylist
for (int i = 0; i < personarraylist.Count; i++)
{
TextBox1.Text += personarraylist[i].ToString();
}
Again thx for the help :-)
You can use Environment.NewLine or simply "\n" to create multiple lines of text.
If that doesn't work, you can try using the DataList control:
<asp:DataList id="myDataList" runat="server">
<ItemTemplate>
Line 1
<br />
Line 2
</ItemTemplate>
</asp:DataList>

Categories

Resources