You are on page 1of 8

DropDownBox

MSSQL 'DataBase befolker' en combobox'


myNerdStuff

Demo Projektet her er en website (ASP.NET) hvor man kan vælge mellem tre forskellige dimser i
dropdown menu, og når der klikkes på en dims, kommer en beskrivelse af dimsen frem i en textbox.

Data i dropdownbox og textbox kommer fra msSQL database

Solution explorer ser ud som billede viser herunder:

Start med at lave en ny website og kald den feks ddltest.

højreklik, add item, vælg web form


Den hedder nu default.aspx og default.aspx.cs

Fyld nu koden herunde ind i filerne:

.Gratis guide fra myNerdStuff, platform: NET 4 / C# - Version 30-11-10 side 1 af 8


DropDownBox
MSSQL 'DataBase befolker' en combobox'
myNerdStuff

Indhold af default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"


%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="DropDownList1" runat="server"
onselectedindexchanged="DropDownList1_SelectedIndexChanged"
AppendDataBoundItems="True" AutoPostBack="True">
<asp:ListItem Value="-1">- Dimser -</asp:ListItem>
</asp:DropDownList>

</div>
<asp:TextBox ID="txtResult" runat="server" Height="168px" TextMode="MultiLine"
Width="322px"></asp:TextBox>
</form>
</body>
</html>

Indhold af default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient; // Vigtig !!
using System.Web.Configuration; // Vigtig !!

public partial class _Default : System.Web.UI.Page


{
string conString =
WebConfigurationManager.ConnectionStrings["NerdStuffDB"].ConnectionString;

protected void Page_Load(object sender, EventArgs e)


{

if (!IsPostBack)
{
//Bruges ikke, viser hvordan der laves manuel befolkning af dropdownliste,
//hvis data ikke skal komme fra database

.Gratis guide fra myNerdStuff, platform: NET 4 / C# - Version 30-11-10 side 2 af 8


DropDownBox
MSSQL 'DataBase befolker' en combobox'
myNerdStuff

//DropDownList1.Items.Add("solarDatalogger");
//DropDownList1.Items.Add("stokerDatalogger");
//DropDownList1.Items.Add("homeAutomation");

string sqlString = "SELECT * FROM TitelBeskrivelse";

SqlConnection con = new SqlConnection(conString);


SqlCommand cmd = new SqlCommand(sqlString, con);

con.Open();
SqlDataReader myReader = cmd.ExecuteReader();

DropDownList1.DataSource = myReader;
DropDownList1.DataTextField = "Titel";
DropDownList1.DataValueField = "Beskrivelse";
DropDownList1.DataBind();
myReader.Close();
con.Close();

}
}

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)


{

string sqlString = "SELECT Beskrivelse FROM TitelBeskrivelse WHERE (Titel =


@Titel)";
//@Titel indeholder det der er valgt i dropdown liste

SqlConnection con = new SqlConnection(conString);


SqlCommand cmd = new SqlCommand(sqlString, con);
cmd.Parameters.AddWithValue("@Titel", DropDownList1.SelectedItem.Text);

con.Open();
SqlDataReader myReader = cmd.ExecuteReader();
myReader.Read();
txtResult.Text = myReader["Beskrivelse"].ToString();
myReader.Close();
con.Close();

}
}

.Gratis guide fra myNerdStuff, platform: NET 4 / C# - Version 30-11-10 side 3 af 8


DropDownBox
MSSQL 'DataBase befolker' en combobox'
myNerdStuff

Befolk combobox / dropdown med data fra database

Opret en tabel i databasen, enten sqlExpress eller som brugt her, msSQL 2008 R2.

Tabel hedder her blot: Titel+Beskrivelse , og indeholder felterne:

TitelID, Titel og Beskrivelse.

Sæt TitelID til primarykey (højreklik, set primary key) og sørg for den selv tæller op ved at sætte
Identity til yes, se billedet her hvordan:

Opret nu felterne og gem ved at trykke på alt s og vælg et navn feks. TitelBeskrivelse.

Herefter skriv nogle data ind i databasefelterne, dem der skal vises i dropDownList og dem som der
skal åbnes og vises når der klikkes på dropDownList.

Højreklik på tabel, og klik på 'show table data' og skriv noget sigende ind.

.Gratis guide fra myNerdStuff, platform: NET 4 / C# - Version 30-11-10 side 4 af 8


DropDownBox
MSSQL 'DataBase befolker' en combobox'
myNerdStuff

Web.Config Editeres

Der skal nu laves en connectionstring i web.config

Streng vist herunder, men det anbefales at bruge http://connectionstrings.com/ her finde
connectionstring til alle databaser.. Det er bedst at copy/paste koden direkte..

<connectionStrings>
<add name="NavnDerBrugeICsharpkoden" connectionString="Data Source=localhost;Initial
Catalog=tabellensNavnImsSQLdb;Integrated Security=True;Pooling=False"/>
</connectionStrings>

Alternativt kan streng kopierer fra databasen, klik på tabellens navn og åben properties vinduet.

.Gratis guide fra myNerdStuff, platform: NET 4 / C# - Version 30-11-10 side 5 af 8


DropDownBox
MSSQL 'DataBase befolker' en combobox'
myNerdStuff

Gennemgang af ændringerne i koden i forhold til tidligere Projekt


(PDF Manuel befolkning: DropDownbox-Manuel-Befolkning-Dotnet)

Forbindelse til conncetion fra C# codebehind

Nu skal der laves forbindelse fra C# koden i default.aspx.cs:

indsæt: stringconString =
WebConfigurationManager.ConnectionStrings["NavnDerBrugeICsharpkoden"].ConnectionString;

Der skal laves en ekstra using for at webconfig kan køre:

using System.Data.SqlClient; // Husk


using System.Web.Configuration; // Husk

I protected void page_load :

uskift:

//old manuel befolkning


//DropDownList1.Items.Add("solarDatalogger");
//DropDownList1.Items.Add("stokerDatalogger");
//DropDownList1.Items.Add("homeAutomation");
Med:
string sqlString = "SELECT * FROM TitelBeskrivelse";

SqlConnection con = new SqlConnection(conString);


SqlCommand cmd = new SqlCommand(sqlString, con);

con.Open();
SqlDataReader myReader = cmd.ExecuteReader();

DropDownList1.DataSource = myReader;
DropDownList1.DataTextField = "Titel";
DropDownList1.DataValueField = "Beskrivelse";
DropDownList1.DataBind();
myReader.Close();
con.Close();

Hvis connectionstring er rigtig er der ingen røde streger og


dropdown er nu fyldt med 'Titel' feltet fra databasen.

.Gratis guide fra myNerdStuff, platform: NET 4 / C# - Version 30-11-10 side 6 af 8


DropDownBox
MSSQL 'DataBase befolker' en combobox'
myNerdStuff

Ofte vil man gerne have der står noget i dropdown box der guider til hvad den kan feks: - Dimser -

Guide til indsætning af dropdown tekst:

• Klik først på den lille pil th. for dropdown boxen / comboboxen
• Her vælges edit item
• List collection Editor kommer frem
• tryk på add og
• ændre text i højre side til den test der skal stå i dropDownList når der ikke er valgt noget
• i value SKAL der skrives -1 *

* I value kan man ved behov skrive feks 2, hvorefter der startes ved menupunkt 2 ved load af
websiten

Klik nu OK og HUSK: tick autopostback on !!!

.Gratis guide fra myNerdStuff, platform: NET 4 / C# - Version 30-11-10 side 7 af 8


DropDownBox
MSSQL 'DataBase befolker' en combobox'
myNerdStuff

Slut med at checke properties, den skal nu se sådan ud:

Vis nu webstedet i browseren. Nederst i browser står der kort: sender anmodning, det er
autopostback der virker og sender tilbage til browser. Der kommer ikke noget frem før

DropDown Click Event i C# code behind

Klik nu på dropdownList i designer så du ender i 'codebehind!!

Nu skal dropdownList sættes op så der kommer noget 'action', eller rettere selectedItem skal nu
bruges til at finde noget i databasen:

string sqlString = "SELECT Beskrivelse FROM TitelBeskrivelse WHERE (Titel = @Titel)";


//@Titel indeholder det der er valgt i dropdown liste

SqlConnection con = new SqlConnection(conString);


SqlCommand cmd = new SqlCommand(sqlString, con);
cmd.Parameters.AddWithValue("@Titel", DropDownList1.SelectedItem.Text);

con.Open();
SqlDataReader myReader = cmd.ExecuteReader();
myReader.Read();
txtResult.Text = myReader["Beskrivelse"].ToString();
myReader.Close();
con.Close();

Resultat fra databasen kommer til at stå i textboxen:

.Gratis guide fra myNerdStuff, platform: NET 4 / C# - Version 30-11-10 side 8 af 8

You might also like