Ich habe ein Bild und eine Schaltfläche. Ich habe eine Methode, die ein Bild zufällig aus einer Reihe von Bildern erzeugt. Aus irgendeinem Grund, während ich auf die Schaltfläche klicke, abgesehen von dem Ereignis, tritt es auch wieder in die Methode 'chooseImage' des Bildes ein und erzeugt eine weitere ID.Beim Klicken zuerst die Methode eingeben und dann auf eine andere Seite gehen
Hier unten finden Sie die Asp des Bildes und des Bildes Button;
<asp:Image ID="Image1" runat="server" Height="300px" Width="200px" OnDataBinding="chooseImage" />
<asp:ImageButton ID="aboutBtn" src="Resources/Icons/HomeAboutMeBtn.png" OnClick="AboutBtn_Click" runat="server" />
Unten ich hier gepostet auch die Event-Handler der Schaltfläche, wo der childID in einer globalen Variablen aus der ‚chooseImge‘ Methode und gespeichert wird erstellt.
protected void AboutBtn_Click(object sender, EventArgs e)
{
Response.Redirect("~/ChildDescription.aspx?id=" + childId);
}
Irgendwelche Vorschläge warum oder wie kann ich es tun? Grundsätzlich möchte ich als Session die ID des auf der Lade-Seite angezeigten Bildes weitergeben.
Hier finden Sie die Methode. Grundsätzlich lese ich zuerst aus der Datenbank eine Reihe von Datensätzen. Dann speichere ich die ID in einem Array, und indem ich eine Zufallsgeneratormethode aufruft, wird sie zufällig eine ID aus dem Array auswählen.
protected void chooseImage(object sender, EventArgs e)
{
using (SqlConnection connection = new SqlConnection(conString))
{
try
{
connection.Open();
using (SqlCommand cmd = new SqlCommand("GetAllChildren", connection))
{
cmd.CommandType = CommandType.StoredProcedure;
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
array.Add(reader["Child_ID"].ToString());
counter++;
}
connection.Close();
}
}
}
catch (Exception) { }
if (array.Count != 0)
{
try
{
using (SqlCommand command = new SqlCommand("GetChildDetails", connection))
{
command.CommandType = CommandType.StoredProcedure;
childId = Convert.ToInt32(array[RandomNumber(1, counter - 1)]);
command.Parameters.Add("@ChildID", SqlDbType.Int).Value = childId;
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Image1.ImageUrl = "Resources/Children Images/" + reader["Primary_Image"].ToString();
ChildName.Text = reader["Child_Name"].ToString();
ChildName.Font.Size = 20;
surname.Text = reader["Child_Surname"].ToString();
surname.Font.Size = 20;
place.Text = reader["Location"].ToString();
place.Font.Size = 14;
genderLabel.Text = reader["Gender"].ToString();
genderLabel.Font.Size = 14;
DateTime birthday = DateTime.Parse(reader["Birthday"].ToString());
DateTime now = DateTime.Today;
int age = now.Year - birthday.Year;
if (birthday > now.AddYears(-age))
{
age--;
}
Years.Text = age.ToString() + "-years-old";
Years.Font.Size = 14;
}
connection.Close();
}
}
}
catch (Exception) { }
}
}
}
private int RandomNumber(int min, int max)
{
Random random = new Random();
return random.Next(min, max);
}
Sie sollten auch angeben, wo/wann die Methode aufgerufen wird, die die Image-ID generiert. –
Das Bild wird beim Laden der Seite in einer Methode namens chooseImage generiert. –
grundsätzlich habe ich eine globale Variable gemacht; 'int childId' und es sollte das Ergebnis der Methode speichern. Aber ich weiß nicht warum, wenn ich auf den Button klicke, ist es bei dieser Methode wieder entring und erzeugt eine weitere ID. –