webForumDet fria alternativet

binda data till webbkontroll

29 svar · 624 visningar · startad av piddy

piddyMedlem sedan aug. 200253 inlägg
#1

Hej!!

Här kommer en fråga från en .NET-nybörjare:

Jag har skapat en aspx-sida där jag hämtar information från en databas (fyller ett DataSetobjekt med en SQLQuery). Jag ser att kopplingen funkar som den ska när jag testar med Response.Write.

Nu till min fråga: Hur gör jag för att binda data till en webbkontroll (i detta fall en <asp:Listbox>) i formuläret? Jag vill att all info i en av databasens tabellkolumner ("tabell Person kolumn Namn") ska visas i Listboxen.

Innehållet är således av typen string.

Någon? Please?

NickemannenMedlem sedan aug. 20003 524 inlägg
#2

Välkommen till wF.

Här hittar du nog svaret om jag fattat det rätt, välj språket
genom att klicka på länkarna längst upp:

http://samples.gotdotnet.com/quickstart/util/srcview.aspx?path=/quickstart/aspplus/samples/webforms/intro/Intro8.src

piddyMedlem sedan aug. 200253 inlägg
#3

tack för snabbt svar!

tyvärr verkar det inte vara riktigt vad jag letar efter koden
<asp:dropdownlist id="Category" runat=server>
<asp:listitem >psychology</asp:listitem>
<asp:listitem >business</asp:listitem>
<asp:listitem >popular_comp</asp:listitem>
</asp:dropdownlist>

verkar ju skapa en dropdownlist med "hårdkodat" innehåll...vad jag far efter är en funktion som motsvarar ASP:s
<%Do while NOt rs.EOF%> för att få skriva ut innehåller i databasen till kontrollen...

renholmMedlem sedan apr. 20012 048 inlägg
#4
minDropDownList.Datasource = minObjectReader;
minDropDownList.DataTextField = "kolumnnamn" // det som visas
minDropDownList.DataValueField = "kolumnnamn" // värdet
minDropDownList.DataBind()

så fyller du en DropDownList från en datakälla.

piddyMedlem sedan aug. 200253 inlägg
#5

Tack, det ska jag pröva!!

Jag kommer att ha flera webbkontroller på sidan som ska hämta data från olika databastabeller, kan jag ändå använda mig av en DataReader? Som min kod är nu har jag använt mig av ett DataSet.

NickemannenMedlem sedan aug. 20003 524 inlägg
#6

DataList eller DataGrind är ju oftast bättre än DataReader om du skall mata ut data.

NETworkMedlem sedan juni 20011 679 inlägg
#7

DataList eller DataGrind är ju oftast bättre än DataReader om du skall mata ut data.

Hm? En datalist och en datagrid är ju asp.net-kontroller för att presentera data, en datareader är ju en teknik att läsa data... två helt olika saker! Du kan däremot använda en datareader för att fylla en DDL om du vill.

:)

renholmMedlem sedan apr. 20012 048 inlägg
#8

Datasource kan använda flera olika typer av indata. T.ex DataReader, DataTable, ArrayList mm.

piddyMedlem sedan aug. 200253 inlägg
#9

nu har jag testat och fått infon i databasen att visas i ListBoxen, jättebra!

men hur gör jag för att ha ett default-option inställt av istället för att det första namnen visas?

i asp skrev man ju <OPTION value= "Välj" selected>Välj</OPTION> eller nåt liknande...

NETworkMedlem sedan juni 20011 679 inlägg
#10

Du kan sätta vilket index som ska vara valt, det gör du med:

myDDL.SelectedIndex

GrynetMedlem sedan maj 2001329 inlägg
#11

myDD.SelectedIndex = myDD.Items.IndexOf(myDD.Items.FindByText("Denna ska vara Selected"));

Vill du selecta på Value istället för text så gör då ganska självklart FindByValue

Eller som Network menar, kort och gott

myDD.SelectedIndex = 123;

renholmMedlem sedan apr. 20012 048 inlägg
#12

Grynet skrev:

myDD.SelectedIndex = myDD.Items.IndexOf(myDD.Items.FindByText("Denna ska vara Selected"));

Kanske en enklare metod...

myDD.Items.FindByText("Denna ska vara Selected").Selected = true;

eller om du vill söka i value:
myDD.Items.FindByText("Denna ska vara Selected").Selected = true;

GrynetMedlem sedan maj 2001329 inlägg
#13

Usch vad det var enklare..tyckte mitt sätt var lite omständigt, danke

piddyMedlem sedan aug. 200253 inlägg
#14

men då väljer jag ju bara bland de poster som finns i databasen (dvs en hel drös med olika namn). eller? jag vill sätta selectedindex till ett värde som jag anger själv, typ "välj".

sedan när användare trycker på dropdownlisten ska alla olika alternativ komma fram....

renholmMedlem sedan apr. 20012 048 inlägg
#15

det bästa sättet att enge ett eget värde är med denna kod:

ListItem item = new ListItem();
item.Text = "Välj";
item.Value = "#";
item.Selected = true;
myDD.Items.Add(item);
NETworkMedlem sedan juni 20011 679 inlägg
#16

...som default så är ju det värdet som ligger högst upp valt, du behöver alltså bara lägga till "Välj" först och sedan fylla på med data från din db.

piddyMedlem sedan aug. 200253 inlägg
#17

menar du att jag ska lägga till "välj" i min databas?

piddyMedlem sedan aug. 200253 inlägg
#18

nu visas ju datan i databasen vid händelsen Page_Load...kanske är det där felet ligger....

renholmMedlem sedan apr. 20012 048 inlägg
#19

Kan man få se på koden du använder?

piddyMedlem sedan aug. 200253 inlägg
#20

självklart! =)

<%@ Import Namespace="System.Data.OleDb" %>
<%@ Import Namespace="System.Data" %>
<%@ Page Language="VB" %>

<script runat="server">

sub Page_Load(obj as Object, e as Eventargs)

'Databaskoppling 

dim objForfattare as new OleDbCommand ("SELECT  \*   FROM Forfattare)

dim objReader as OleDbDataReader

oConn.Open
objReader = objForfattare.ExecuteReader

DDLSignatur.DataSource = objReader
DDLSignatur.DataTextField = "Namn"
DDLSignatur.DataValueField = "Namn"

'prövar att ställa in ett defaultvärde
dim välj = new ListItem()
välj.Text = "Välj"
välj.Value = "#"
välj.Selected = true
DDLSignatur.Items.Add(välj)

DDLSignatur.DataBind()

end sub
</script>
....
och i html-koden:
<asp:DropDownList id="DDLSignatur" Runat="server" />

..................

Genererad på 372 ms · cache AV · v20260730165559-full.f96bc7eb