01. december 2010 - 08:24Der er
20 kommentarer og 1 løsning
Count i en LINQ connection
Hvordan kan man counte antal recorder i en LINQ og sætte dette antal = PValue, ud fra denne kode som henter alt fra min db
Public Sub linqdb()
Dim DBconn As New GetProductListDataContext() Dim Q = _ From p In DBconn.GetTable(Of P)() _ Order By p.PName Descending _ Select p MyRep.DataSource = Q MyRep.DataBind() End Sub
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Dim DBconn As New GetProductListDataContext() Dim Q = _ From p In DBconn.GetTable(Of Product)() _ Order By p.PName Descending _ Select p MyRep.DataSource = Q MyRep.DataBind() Dim PValue As String = Q.Count() End Sub
eller før MyRep.DataSource = Q synes nemlig ikke den tager noget med over på min side..
Dim DBconn As New GetProductListDataContext() Dim Q = _ From p In DBconn.GetTable(Of Product)() _ Order By p.PName Descending _ Select p Dim L = Q.ToList MyRep.DataSource = L MyRep.DataBind() Dim PValue As Integer = L.Count()
Min code er som flg. og den kommer ikke noget noget Der kommer 4 recorder, men der hvor den skulle skrive tallet 4 skriver den intet.
Public Sub linqdb()
Dim DBconn As New GetProductListDataContext() Dim Q = _ From p In DBconn.GetTable(Of Product)() _ Where p.IsEnabled = "1" _ Order By p.PName Descending _ Select p Dim L = Q.ToList MyRep.DataSource = Q MyRep.DataBind() Dim PValue As New Label PValue.Text = L.Count().ToString()
jeg ved hvad problemet er men hvordan klare jeg det. den Label er inde i min Repeater. Det er vel derfor den ikke kan skrive PValue, medmindre jeg smider den uden for min repeater.
Se nedenstående eksempel for ideer til hvordan det kan løses:
<%@ import namespace="System.Data" %> <%@ import namespace="System.Data.SqlClient" %> <html> <head> <script language="VB" runat="server"> Sub Page_Load(sender As Object, e As EventArgs) Dim con As SqlConnection = New SqlConnection("server=ARNEPC3\SQLEXPRESS;Integrated Security=true;database=Test") con.Open() Dim cmd As SqlCommand = New SqlCommand("SELECT * FROM T1", con) Dim rdr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection) myrep.DataSource = rdr myrep.DataBind() For Each ctl As Control In myrep.Items CType(ctl.FindControl("mylbl"), Label).Text = "Det virker" Next End Sub </script> </head> <body> <form runat=server> <table border> <asp:Repeater id="myrep" runat="server"> <ItemTemplate> <tr> <td><%# Eval("F1") %></td> <td><%# Eval("F2") %></td> <td><asp:label id="mylbl" runat="server"/></td> </tr> </ItemTemplate> </asp:Repeater> </table> </form> </body> </html>
I Visual Studio Får jeg ikke fejl ved dette Public Sub linqdb()
Dim DBconn As New GetProductListDataContext() Dim Q = _ From p In DBconn.GetTable(Of Product)() _ Where p.IsEnabled = "1" _ Order By p.PName Descending _ Select p
MyRep.DataSource = Q MyRep.DataBind() For Each ctl As Control In MyRep.Items CType(ctl.FindControl("PValue"), Label).Text = Q.ToList.Count() Next
End Sub
Men når jeg Debug (F5) så System.NullReferenceException was unhandled by user code Message=Objektreferencen er ikke indstillet til en forekomst af et objekt.
Jeg brugte din CType linje men erstattede hele For Each med CType(MyRep.Controls(MyRep.Controls.Count - 1).FindControl("PValue"), Label).Text = Q.ToList.Count()
og det virker 1000 tak og også tak for din tålmodighed med mig....
kunne jeg tage det tal fra CType(MyRep.Controls(MyRep.Controls.Count - 1).FindControl("PValue"), Label).Text = Q.ToList.Count()
og i samme sub sætte det = itemscount så jeg kan bruge det i denne også
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.