Man kan göra såhära:
ListItem li;
li = new ListItem("text", "value");
if(CheckIfSelectedMetod("value"))
li.Selected;
ddl.Items.Add(li);
ddl.DataBind();
13 svar · 512 visningar · startad av thevice
Hej!
Jag fyller min DropDownList på detta sett:
System.Collections.ArrayList arrX = new System.Collections.ArrayList();
arrX.Add("A");
arrX.Add("B");
arrX.Add("C");
ddlX.DataSource = arrX;
ddlX.DataBind();
Sedan på sidan:
<asp:DropDownList ID="ddlX" runat="server" />
Hur gör jag för att kolla i databasen vilket värde jag har där och sedan gör t.ex B selected?
Finns det något bättre sett att fylla min dropdownlist och sedan kolla vilken som ska vara selected?
/ Timmie
Man kan göra såhära:
ListItem li;
li = new ListItem("text", "value");
if(CheckIfSelectedMetod("value"))
li.Selected;
ddl.Items.Add(li);
ddl.DataBind();
...
Frequz blir inte det settet ganska jobbigt att göra med tanke på att jag fyller min drop downlist med ca 50 olika saker?
P: ... vad?
Jo jag antog att du loopar ut datat med en SqlDataReader alltså...
thevice skrev:
P: ... vad?
frequz hann före, om du vet vilket index det är på så kan du ju göra
ddl.SelectedIndex = 2. Vilket blir C i ditt fall.
Tack det löste problemet, men har ett annat problem - Databasen vägrar uppdateras!
Jag gör så här:
protected System.Web.UI.WebControls.DropDownList ddlX;
public void UpdateQuestions_Click(object obj, EventArgs e)
{
using (MySqlConnection objConnection = new MySqlConnection(ConfigurationManager.AppSettings["DatabaseConnection"]))
{
using (MySqlCommand objCommand = new MySqlCommand("", objConnection))
{
objCommand.CommandText = "UPDATE tbl SET strX = ?strX WHERE intID = ?intID";
objCommand.Parameters.Add(new MySqlParameter("?intID", Convert.ToInt32(Session["intID"])));
objCommand.Parameters.Add(new MySqlParameter("?strX", Convert.ToString(ddlX.Text)));
}
}
}
<asp:DropDownList ID="ddlX" runat="server" />
<asp:Button ID="btnUpdate" runat="server" Text="Uppdatera!" OnClick="UpdateQuestions_Click" />
Jag ser inte vad jag gör för fel? Värdet setts inte in utan databas-fältet blir tomt.
Om jag däremot gör så här så uppdateras det:
objCommand.Parameters.Add(new MySqlParameter("?strX", Convert.ToString("Hejsan")));
Vad gör jag för fel?
/ Timmie
Du uppdaterar aldrig databasen. objCommand.ExecuteNonQuery() krävs.
Jag använder det, har:
objConnection.Open();
objCommand.ExecuteNonQuery();
objConnection.Close();
Efter mina Parameters, råkade visst ta bort det från koden när jag klistrade och klippte.
Du får visa mer kod.
Eller så kan det vara att du binder datan efter postback och därmed returnerar fel värde (kolla Page.IsPostBack).
Tackar if (!Page.IsPostBack) löste det!
Det finns en metod för att hitta ett item med ett visst värde eller text och sedan är det lätt att göra den selected:
ddl.Items.FindByValue(Value).Selected = true;
eller
ddl.Items.FindByText(Text).Selected = true;
butiko skrev:
Det finns en metod för att hitta ett item med ett visst värde eller text och sedan är det lätt att göra den selected:
ddl.Items.FindByValue(Value).Selected = true; eller ddl.Items.FindByText(Text).Selected = true;
...vilket användes i ASP.NET 1.0 då metoden SelectedValue inte kom förrän i version 1.1. Sedermera går det att använda Text, precis som övriga textkontroller, vilken dök upp i version 2.0.
Det är därmed betydligt enklare att skriva ddl.Text = "value" (även om jag föredrar SelectedValue av semantiska skäl).
Ah, det var som sjutton... :)