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 · 326 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();