Hej! Hejsan Ok Tom! det fungerade fint. Nu fick jag bara ett problem. Hej! Hej!Ett surt combo problem
Jag fyller en combo enl följande:
<code>
// Connection - string
string ConnectionString="Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=WORF;Data Source=(local);";
string SQL ="Select * from tbl_Region order by Region asc";
// Initsierar databaskopplingen med SQL-fråga
SqlConnection con = new SqlConnection(ConnectionString);
cboRegion.Items.Clear();
con.Open();
// Skapar DataSettet som skall innehålla resultatatet från DB
DataSet ds = new DataSet();
SqlDataAdapter sqlAdapt = new SqlDataAdapter(SQL,con);
sqlAdapt.Fill(ds);
// Fyller Combon från datasettet
cboRegion.DataSource = ds.Tables[0]; // Tabell
cboRegion.DataTextField = "Region";// Kolumn
cboRegion.DataValueField = "RegionID"; // Idnummer
cboRegion.DataBind();
</code>
Jag vill att först i combon skall det finnas en text "-inget Valt" och jag vill inte lägga in det i tabellen jag fyller i från. Jag har provat
<code>
// Skapar DataSettet som skall innehålla resultatatet från DB
DataSet ds = new DataSet();
SqlDataAdapter sqlAdapt = new SqlDataAdapter(SQL,con);
sqlAdapt.Fill(ds);
cboRegion.Items.Add("- Ingen vald");// Manuell rad
// Fyller Combon från datasettet
cboRegion.DataSource = ds.Tables[0]; // Tabell
cboRegion.DataTextField = "Region";// Kolumn
cboRegion.DataValueField = "RegionID"; // Idnummer
cboRegion.DataBind();
</code>
dvs lägga till en post manuellt med item.Add. och sedan kör jag en
<code>
cboRegion.SelectedItem.Text = "- Ingen vald";
</code>
för att visa den raden först . Jag vill även till denna posten lägga ett Guid ID. ( som jag gör med "cboRegion.DataValueField = "RegionID";" då detta är en Guid) Detta för att jag skall kunna känna igen att denna är vald och då kunna göra åtgärder för det.
Men jag får det inte att fungera, så hur skall göra. I systemet har jag tre combos som fylls allt eftersom jag väljer från de andra:
ex
Väljer ett värde i Combo1 då fylls värden som är kopplade till mitt val i combo2. När jag sedan väljer ett värde i combo 2 så skall combo 3 fyllas med kopplade värden till mitt andra val. Och då vill jag kunna styra vad som skall visas i combo 2 och 3 när "- Inget valt" visas i Combo1.
bökigt det här men jag hoppas att ni förstår.
/Tyronne
</code>Sv: Ett surt combo problem
Du måste lägga till ListItem efter det att du har gjort databind på DropDownlisten
metoden Databind() raderar först alla Items i objektet nämligen.
så skriv såhär:
<code>
cboRegion.DataSource = ds.Tables[0]
cboRegion.DataTextField = "Region"
cboRegion.DataValueField = "RegionID"
cboRegion.DataBind()
cboRegion.Items.insertAt(0, new listitem("Text","Värde"))
</code>
//Tom OlssonSv: Ett surt combo problem
När jag väljer ett värde i combo så adderas en ny rad av
<code>
cboRegion.Items.Insert(0, new ListItem("- Ingen vald","{97c6eff4-f785-4b1e-8478-08aa5a394a56}"));
</code>
varje gång, dvs jag får dubletter mm.
jag har en if sats i Page_load
<code>
if(Page.IsPostBack == false)
LoadRegions();
</code>
LoadRegion är den metod som fyller combon..
Hur löser jag det?
/TyronneSv:Ett surt combo problem
så här borde sidan se ut ungefär
<code>
function Page_load(){
if(Page.isPostBack == false)
LoadRegions();
}
function LoadRegions(){
cboRegion.DataSource = ds.Tables[0];
cboRegion.DataTextField = "Region";
cboRegion.DataValueField = "RegionID";
cboRegion.DataBind();
cboRegion.Items.Insert(0, new ListItem("- Ingen vald","{97c6eff4-f785-4b1e-8478-08aa5a394a56}"));
}
</code>
om du gör en postback till sidan nu, kommer inte denna funktion att köras igen.
Men om din sida redan funkar så här så kan du väll posta in hela code-behind koden så kan jag kolla på den.
//Tom Olsson
PS. Om det är lite konstiga syntax så beror det på att jag kodar VB.NET i valiga fall. DS.Sv: Ett surt combo problem
Jag har dubbel kollat och korrigerat efter ditt exempel och nu fungerar det.
super tack för hjälpen
/Tyronne