Nja testa att byta ut kolumnnamnet?
SQL = "SELECT [Atmosfär] as k1, [AtmosfärID] as k2 FROM [Atmosfär]";
AtmosfarList.DataTextField = "k1";
AtmosfarList.DataValueField = "k2";
7 svar · 314 visningar · startad av Annelie_82
Jag vill hämta värden från en tabell och lägga dem i en dropdownlist. Jag lyckas att få en dropdownlist att funka (jag har fem stycken som ska hämtas från fem olika tabeller)
Min kod som funkar ser ut såhär...
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
OleDbDataAdapter objAdapter = null;
DataSet objDataSet = new DataSet();
String myConn ="Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:/Inetpub/wwwroot/sthlmskrogar1/sthlmkrog.mdb;";
OleDbConnection cn = new OleDbConnection(myConn);
cn.Open();
string SQL = "SELECT * FROM Genre";
objAdapter = new OleDbDataAdapter(SQL, cn);
objAdapter.Fill(objDataSet, "Genre");
GenreList.DataSource = objDataSet;
GenreList.DataTextField = "Genre";
GenreList.DataValueField = "GenreID";
GenreList.DataBind();
Men om jag sen lägger till en ny SQL - fråga som ska hämta till nästa dropdownlist så får jag fel...
SQL = "SELECT * FROM Atmosfär";
objAdapter = new OleDbDataAdapter(SQL, cn);
objAdapter.Fill(objDataSet, "Atmosfär");
AtmosfarList.DataSource = objDataSet;
AtmosfarList.DataTextField = "Atmosfär";
AtmosfarList.DataValueField = "AtmosfärID";
AtmosfarList.DataBind();
då får jag felet:
"System.Web.HttpException: DataBinder.Eval: System.Data.DataRowView innehåller inte någon egenskap med namnet Atmosfär."
Hur löser jag detta?
Nja testa att byta ut kolumnnamnet?
SQL = "SELECT [Atmosfär] as k1, [AtmosfärID] as k2 FROM [Atmosfär]";
AtmosfarList.DataTextField = "k1";
AtmosfarList.DataValueField = "k2";
Tyvärr, det funkade inte det heller.. :(
Du ändrade på kolumnnamnen i databasen då? Testa med detta i stället, om du körde cyprus kod direkt:
SQL = "SELECT [Atmosfar] as k1, [AtmosfarID] as k2 FROM [Atmosfar]";
AtmosfarList.DataTextField = "k1";
AtmosfarList.DataValueField = "k2";
Byt namnet Atmosfär till t.ex. Atmosphere. Av erfarenhet använder jag aldrig svenska i programmering/variabelhantering.
Sedan funderar jag på om du inte måste byta DataTable i ditt DataSet, men det kanske ska ske automatiskt. Jag vet inte eftersom jag inte har behövt jobba något ännu som kräver ett dataset. DataTable räcker utmärkt... än så länge ;)
Jag löste det på ett annat sätt, men tack alla ni som hjälpt mej!
Du får gärna berätta hur du gjorde för alla som kollar i denna tråd i framtiden. ;)
jag skrev såhär..
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
OleDbDataAdapter objAdapter = null;
DataSet objDataSet = new DataSet();
String myConn ="Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:/Inetpub/wwwroot/sthlmskrogar1/sthlmkrog.mdb;";
OleDbConnection cn = new OleDbConnection(myConn);
cn.Open();
string SQL = "SELECT * FROM Genre";
objAdapter = new OleDbDataAdapter(SQL, cn);
objAdapter.Fill(objDataSet, "Genre");
GenreList.DataSource = objDataSet.Tables["Genre"];
GenreList.DataTextField = "Genre";
GenreList.DataValueField = "GenreID";
GenreList.DataBind();
GenreList.Items.Add("- Sök -");
GenreList.Items[ GenreList.Items.Count-1 ].Value = "¤";
GenreList.Items[ GenreList.Items.Count-1 ].Selected = true;
SQL = "SELECT * FROM Atmosfär";
OleDbCommand olecommand = new OleDbCommand(SQL,cn);
objAdapter.SelectCommand = olecommand;
objAdapter.Fill(objDataSet, "Atmosfär");
AtmosfarList.DataSource = objDataSet.Tables["Atmosfär"];
AtmosfarList.DataTextField = "Atmosfär";
AtmosfarList.DataValueField = "AtmosfärID";
AtmosfarList.DataBind();
AtmosfarList.Items.Add("- Sök -");
AtmosfarList.Items[ AtmosfarList.Items.Count -1 ].Value = "¤";
AtmosfarList.SelectedIndex = AtmosfarList.Items.Count -1;
objDataSet.Clear();