Ich habe eine Dropdown-Liste in einem Gridview und wenn das Textfeld geändert wird, möchte ich den ausgewählten Wert in den Dropdown-Listen (drei separate insgesamt) mit den Daten in der Datenbank übereinstimmen. Der Code für den Fall Textbox geändert unter:Setzen Sie den ausgewählten Wert von DropDownList basierend auf der Datenbank
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
DropDownList ddl = new DropDownList();
string connectionString = ConfigurationManager.ConnectionStrings["*******"].ConnectionString;
using (SqlConnection con = new SqlConnection(connectionString))
{
string query = "SELECT one, two, three FROM table WHERE id = " + TextBox1.Text;
SqlDataAdapter sda = new SqlDataAdapter(query, con);
DataSet ds = new DataSet();
int num = sda.Fill(ds);
if (num > 0)
{
GridView1.Visible = true;
GridView1.DataSource = ds;
GridView1.DataBind();
}
else
{
if (num == 0)
{
GridView1.Visible = false;
}
else
{
BindGrid();
}
}
}
Ihr Design ist anfällig für SQL-Injektion. Was passiert, wenn jemand dies in "TextBox1" eingegeben hat: "1; drop database DB_NAME()". Validatoren verhindern dies nicht vollständig, ein Hacker könnte den ViewState modifizieren, um dies zu umgehen. –
Die Textbox darf nur bis zu zehn Zeichen enthalten und erlaubt nur ganze Zahlen. In dem Moment, in dem Sie versuchen, etwas anderes einzugeben, wird es Sie auffordern. Und ich schwöre feierlich, dass ich es parametrisieren werde, ich möchte es zuerst arbeiten lassen (zwei Tage und Zählung) – a1yx
Soll Ihre Abfrage genau eine Reihe zurückgeben? –