Issuu on Google+

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 using using using using using using using using

System; System.Collections.Generic; System.Linq; System.Web; System.Web.UI; System.Web.UI.WebControls; System.Data; System.Data.SqlClient; System.Web.Configuration;

// Vigtig !! // 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: string

conString = WebConfigurationManager.ConnectionStrings["NavnDerBrugeICsharpkoden"].ConnectionString;

Der skal laves en ekstra using for at webconfig kan køre: using System.Data.SqlClient; using System.Web.Configuration;

// Husk // 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


DROPDOWNBOX I C# database items