icaaqMedlem sedan okt. 20005 273 inlägg Jag har en datalist med en <itemtemplate> där jag loppar ut ett dataset.....men jag får inte ut värdena i mitt dataset, så här ser det ut nu
[red]
<asp:datalist id="DataList1" runat="server" width="100%">
<itemtemplate>
·[b]<%# DataBinder.Eval(Container.DataItem, "f_answ")%>[/b]</td>
<tr>
<td>
<table class="bar" cellspacing="0">
<tr>
<td class="bar" width="75%"><img src="images/nocansee.png"></td>
<td class="barend"><img src="images/barend.png" align="top"></td>
</tr>
</table>
</td>
</tr>
</itemtemplate> </asp:datalist>[/red]
men jagfårDataBinder.Eval: 'System.Data.DataRowView' does not contain a property with the name f_answ.
hur ska jag göra?
NETworkMedlem sedan juni 20011 732 inlägg Det verkar som om f_answ inte finns, är du säker på att du skrivit rätt? Tips: för att snabbt kolla vad som finns i ditt dataset och vad de olika kolumnerna heter, släng in det i en ren datagrid.
icaaqMedlem sedan okt. 20005 273 inlägg Jag binder Datalisten till detta DataSet
[red]
string sqlAns = "SELECT f_answ pk_id from t_answ where f_que_id = " + Id;
SqlDataAdapter myDa = new SqlDataAdapter(sqlAns, myConn);
DataSet myDs = new DataSet();
myDa.Fill(myDs, "t_answ");[/red]
Så den borde finnas där :)
NETworkMedlem sedan juni 20011 732 inlägg Hm, och du behöver inte plotta dit ett litet kommatecken mellan f_answ och pk_id i din selectsats då?
icaaqMedlem sedan okt. 20005 273 inlägg Nu vill jag räkna ut procenten på svaren i repeatern men hur ska jag göra då jag har ett fält i databasen som heter f_hits och ett fält som jag skapat i SQL-satsen som heter NoOfAnswers så jag får ut rätt data ur databasen det är bara hur jag ska kunna dela delen på det hela i loopen som är kruxet :OO
Summasummarum så vill jag dela f_hits med NoOfAnswers i en repeater......
mvh icaaq
icaaqMedlem sedan okt. 20005 273 inlägg Jag testade så här men det blev helt fel
[red]
<%#((Container.DataItem, "f_hits") / (Container.DataItem, "NoOfAnswers"))%>[/red]
icaaqMedlem sedan okt. 20005 273 inlägg Om inte det går på nått sätt hur ska jag lösa det då? kanske fixa allt i SQL-satsen eller labba med koden i *.cs filen änu mer....
tacksam för alla svar och förslag
mvh icaaq
renholmMedlem sedan apr. 20012 266 inlägg Borde inte följande funka?
<%# Container.DataItem("f_hits") / Container.DataItem("NoOfAnswers") %>
icaaqMedlem sedan okt. 20005 273 inlägg Den gnäller att jag inte kan använda / med strings, så hur konverterar jag värdena till int ?
mvj icaaq
PatrikBMedlem sedan mars 20002 836 inlägg om det vore VB så kan du parsa till int så här:
Int32.Parse(Container.DataItem("f_hits"))
cya,
PatrikB
PatrikBMedlem sedan mars 20002 836 inlägg eller kanske så här:
Public Function MakePercent(ByVal value As String, ByVal totalValue As String) As String
Dim intValue As Double = Double.Parse(value)
Dim intTotalValue As Double = Double.Parse(totalVAlue)
Dim outPut As String = ((intValue / intTotalValue) * 100).ToString() & " %"
return outPut
End Function
<redigerat>
redigerade i funktionen ovan från int32 till double (kanske inte ska typa om till integers ;) )
</redigerat>
Funktionen ovan får du lägga i din .aspx sida eller code-behind fil
Anropa den sedan i datalistens itemtemplate (om det är en sådan du använder):
<%# MakePercent(Container.DataItem("f_hits"), Container.DataItem("NoOfAnswers")) %>
om nu båda är av typen string, annars får du ändra i funktionen.
cya,
PatrikB
NETworkMedlem sedan juni 20011 732 inlägg Den kastar ut strängar så du måste konvertera till en int, kan även göras direkt:
<%# Convert.ToInt32(Container.DataItem("f_hits")) / Convert.ToInt32(Container.DataItem("NoOfAnswers")) %>
Red: Sen får du snygga till det lite, så att du inte får avrundningsfel o sånt naturligtvis!
icaaqMedlem sedan okt. 20005 273 inlägg Jag gjorde en funktion av det hela
[red]
public string MakePercent(string Hits, string NoOfAnswers)
{
string MakePercent = ((Convert.ToInt32(Hits)*100)/ Convert.ToInt32(NoOfAnswers)).ToString();
return MakePercent;
}[/red]
Och den fungerar, om jag lägger in värdena för hand....men inte om jag ska lägga in dem med Container.DataItem. Om jag försöker med Container.DataItem("f_hits") så får jag
CS0118: 'System.Web.UI.WebControls.DataListItem.DataItem' denotes a 'property' where a 'method' was expected
Hur ska jag lösa det ?
mvh icaaq
<redigerat>
[red]
<%# MakePercent(Container.DataItem("f_hits"), Container.DataItem("NoOfAnswers"))%>[/red]
Sågör jag när det blir fel</redigerat>
NETworkMedlem sedan juni 20011 732 inlägg public string MakePercent(object Hits, object NoOfAnswers)
//Sen får du göra dina objects till strängar i koden...
icaaqMedlem sedan okt. 20005 273 inlägg Nej det blir ju samma fel för det.....hör inte det felet ihop med Container.DataItem ?
Vad har dem för Properties?
icaaqMedlem sedan okt. 20005 273 inlägg Och när jag svarade på denna så fick jag svaret själv...... nu funkar det :e
icaaqMedlem sedan okt. 20005 273 inlägg Ok nu har jag ett problem igen.
Jag tänkte att jag skulle använda header och footer templates med men då gick jag bet. Hela upplägget ser ut såg ut så här innan ommöbleringen med header och footer....
Först hade jag en Frågan som var en label( den hämtar jag ur en datareader.
Sen loppade jag ut ett DataSet i en ItemTemplate där alla Svarsalternativ fanns.....
Det hade jag fixat så allt funkade. Men så tänkte jag visa totalt antal röster längst ner på pollen, då kom tanken på footer.
Men när jag har gjort så så kunde jag ju inte sätta texten på label(frågan) inne i HeaderTemplate och Totala antalet träffar visas inte heller.......Jag visar lite kod så kanske ni fattar ;)
[red][font=courier][1]
<asp:datalist id="DataList1" runat="server" cssclass="poll" cellpadding="4">
<headertemplate>
<span class="underline">Här vill jag visa frågan</span>
</headertemplate>
<ItemTemplate>
·<asp:linkbutton commandargument='<%#DataBinder.Eval(Container.DataItem, "pk_id", "{0:G}")%>' onclick="vote" runat="server" cssclass="four"><%# DataBinder.Eval(Container.DataItem, "f_answ", "{0:G}") %>:</asp:linkbutton><span class="percent"><%# MakePercent(DataBinder.Eval(Container.DataItem, "f_hits", "{0:G}"), DataBinder.Eval(Container.DataItem, "NoOfAnswers", "{0:G}"))%></span></td>
<tr>
<td>
<table class="bar" cellspacing="0">
<tr>
<td class="bar" width="<%# MakePercent(DataBinder.Eval(Container.DataItem, "f_hits", "{0:G}"), DataBinder.Eval(Container.DataItem, "NoOfAnswers", "{0:G}"))%>"><img src="images/nocansee.png"></td>
<td class="barend"><img src="images/barend.png" align="top"></td>
</tr>
</table>
</ItemTemplate>
<footertemplate>
Totalt antal röster:<%# DataBinder.Eval(Container.DataItem, "NoOfAnswers", "{0:G}")%>
</footertemplate>
</asp:datalist>[/1][/font][/red]
Så frågorna lyder
1. Hur ska jag få in frågan som jag har i en DataReader, in i headertemplate.
2. Varför visas inte NoOfAnswers
mvh icaaq