Hur gör man en poll (omröstning) i asp.net? Vet inteom jag missförstår din fråga, men du kan ju använda dig av TOP vid kopplingen till DB. Japp, men hur ska jag göra för att få fram den aktuella frågans id innan jag gjort en repeater så att jag kan använda det id't till att få fram de rätta svarsalternativen? Robert. Jag förstår inte riktigt problemet. Jag har en tabell för frågan, sedan en annan tabell för svarsalternativen! dim sql as string = "SELECT * FROM fraga order by datum desc limit 0,1" För det första, varför binder du frågan och vad binder du den till? Du behöver inte databinda för att få ut saker ur en Reader eller annat från en databas. Jag är ju nybörjare i asp.net som ni nog förståt, men är det inte "DataBind()" som lägger till allt i repeatern? Om inte, vad gör den då? Jag skrev fel, det jag menade var att du kör frågan och får tillbaka en Reader som vanligt. När jag kör din kod får jag: <info> 1. CB.CreateRepeater: Ok, det är alltså en CreateReader funktion du gjort, inte Repeater.poll
På något sätt så måste man ju få reda på den aktuella frågans id så att man kan ta fram rätt svarsalternativ,
hur ska man göra detta innan man ens öppnat en repeater?
Någon som har en lösning om detta?Sv: poll
Sv: poll
Sv: poll
Hej, Kan den aktuella frågan vara olika? eller är det alltid samma aktuella fråga? för om det är samma
kan du ju plocka den efter senaste datum eller hur du ni identifierar frågorna. På så vis får du ut ID som du sedan kan nyttja för svaren.
Mvh JohanSv: poll
Hur ser din databasmodell ut?
När du öppnar sidan där din fråga skall synas så hämtar du aktuell fråga från databasen. Antingen hämtar du frågan och sedan svarsalternativen i ett eget db-anrop baserat på den aktuella frågans id. Sedan binder du svarsalternativen till repeatern. Eller så gör du en JOIN och får tillbaka alla svarsalternativ på en gång. Du skriver ut frågan från första raden i db-resultatet och binder sedan samma db-resultat till din repeater men visar då bara svarsalternativen.
Kolla även här, http://aspnet.4guysfromrolla.com/articles/061604-1.aspxSv: poll
För att jag ska få ut rätt svartalternativ så måste jag få reda på frågans id eftersom att det är idät som binder frågan och svarsalternativen.
Så jag frågar igen: Hur ska jag få reda på frågans id innan jag öppnar repeatern?
EDIT:
dim sql as string = "SELECT * FROM fraga order by datum desc limit 0,1"
.....
någonting som tar ut ett id..
..
fraga.DataSource = reader
fragar.Databind()
..
Dim sql2 as string "SELECT * FROM alt WHERE Fid = "& id &""
..
alt.DataSource = CB.CreateRepeater("SELECT * FROM gastbok")
alt.Databind()
Om jag ska göra en join, hur ska jag göra så att bara svarsalternativen blir länkar?Sv: poll
Om det där är din första fråga så får du ju ut id:t. Kör den frågan i en Repeater och plocka ut det. Sen använder du det i din andra fråga. Om du vet hur man kör en databasfråga så vet du ju redan svaret på din fråga.
Edit:
Det jag inte förstår är varför du ska databinda själva frågan, och i så fall, vad databinder du den till?
Och om du nu ska göra det så får du lägga en OnItemDataBound på det du nu binder till och sen köra FindControl och hitta ID:t, därefter binda din svarsrepeater.Sv: poll
För det andra, om du inte vet vad OnItemDataBound är så föreslår jag att du läser quickstarten på http://samples.gotdotnet.com/quickstart/aspplus/ samt på MSDN vad de kontroller du använder är för något och vad de gör.Sv: poll
Hur ska jag kunna köra frågan i en repeater?
Då måste jag väl ta in "<%" taggar? Är det den enda utvägen?
Vad jag hört så ska man undvika att använda dessa så mycket man kan, men om det inte gör så mycket så ska jag försöka fixa det..Sv: poll
Lägg en Label i din .aspx kod där frågan skall visas.
code-behind
<code>
... kör koden i en reader precis som vanligt ...
myReader.Read()
Dim currId As Integer
lblFraga.Text = myReader("fragekolumn")
currId = myReader("idkolumn")
... kör dbfråga efter svar och skicka in currId ...
... Databind svaren till en Repeater
</code>
Innan man kör myReader.Read() så kan man kolla så den inte är tom, men den skulle bara vara tom om din databastabell är tom.
Kolla på MSDN vad du kan göra med en Reader. Kolla igenom de tutorials som finns på gotdotnet.com också.
Något som är bra att göra till rutin är att varje gång du ska använda en kontroll du inte använt förut så läs igenom på MSDN vad kontrollen är och vad den kan göra.Sv: poll
Name 'fraga' is not declared.
Här är koden:
Sub page_load()
fraga.DataSource = CB.CreateRepeater("SELECT fraga FROM fraga ORDER BY datum DESC Limit 0,1")
fraga.Databind()
'tar reda på frågan
fraga.Read()
Dim CurrId as integer
lblfraga.text = fraga("fraga")
lbltotala.text = fraga("totalaroster")
CurrId = fraga("id")
'denna kod lägger till alla svar
svar.DataSource = CB.CreateRepeater("SELECT alt FROM fraga WHERE id = "& PollId &"")
svar.Databind()
End SubSv: poll
Sub page_load()
fraga.DataSource = CB.CreateRepeater("SELECT fraga FROM fraga ORDER BY datum DESC Limit 0,1")
fraga.Databind()
'tar reda på frågan
fraga.Read()
Dim CurrId as integer
lblfraga.text = fraga("fraga")
lbltotala.text = fraga("totalaroster")
CurrId = fraga("id")
'denna kod lägger till alla svar
svar.DataSource = CB.CreateRepeater("SELECT alt FROM fraga WHERE id = "& PollId &"")
svar.Databind()
End Sub
</info>
1. Vad är CB.CreateRepeater och fraga.DataBind? Du ska ju köra frågan så att du får ut en DbReader. Läs på vad en Reader är på MSDN för vad du gör nu har jag inte en aning om.
2. Varför använder du PollId i din andra Select när variabeln heter CurrId?
Du måste ändra i min kod så att den passar dina förutsättningar.
Om du inte förstår hur du använder Reader och Repeaters så är det dags att gå tillbaka till Tutorials.Sv: poll
Public Shared Function CreateRepeater(sql As String)
Dim Cn As New OdbcConnection(ConfigurationSettings.AppSettings("connect"))
Dim Command As New OdbcCommand (sql, Cn)
Cn.Open()
Dim lasare As odbcDataReader
lasare = Command.ExeCuteReader()
return lasare
lasare.Close()
Cn.Close()
Command.Dispose()
Cn.Dispose()
End function
Jag gör alltså en repeter så jag slipper så mycket kod i aspx filen :)
Säg vad jag ska söka på i SDK:n, när jag säkte på "Reader" så kommer jag få sitta hela kvällen och titta igenom allt =S
2. Misstag, ska inte vara så!Sv: poll
Mer om odbcDataReader, http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataodbcodbcdatareaderclasstopic.asp
Då förstår jag vad du försöker göra, men varför har du DataSource och DataBind? En Reader är ju databasresultatet och du försöker binda något till den. Funktionen returnerar en Reader, dvs.
<code>
dim fraga as odbcDataReader
fraga = CB.CreateRepeater("SELECT fraga FROM fraga ORDER BY datum DESC Limit 0,1")
fraga.Read()
Dim CurrId as integer
lblfraga.text = fraga("fraga")
lbltotala.text = fraga("totalaroster")
CurrId = fraga("id")
'denna kod lägger till alla svar
dim svar As odbcDataReader
svar.DataSource = CB.CreateRepeater("SELECT alt FROM fraga WHERE id = "& CurrId &"")
svar.Databind()
</code>
Läs på i länken ovan för att se mer om Reader.
Några andra saker jag undrar över är, heter båda tabellerna fraga?
Heter kolumnerna fraga och alt?