Mossberg Posted September 2, 2004 Share Posted September 2, 2004 Trodde jag kunde det här men icke, denna ska konverteras till c#: if not (Session(Calendar1.SelectedDate.ToString) is nothing) Har provat: if (!(Session[Calendar1.SelectedDate.ToString] == null)) men det blir fel... Tips? Link to comment Share on other sites More sharing options...
Mossberg Posted September 2, 2004 Author Share Posted September 2, 2004 Fixade det själv: if (!(Session["Calendar1.SelectedDate"].ToString() == null)) Link to comment Share on other sites More sharing options...
Mossberg Posted September 2, 2004 Author Share Posted September 2, 2004 Ehe... Raden är rätt uppbyggd men den resulterar i felet: System.NullReferenceException: Object reference not set to an instance of an object. if-satsen ser ut såhär i sin helhet: if (!(Session["Calendar1.SelectedDate"].ToString() == null)) { Label I = new Label(); I.Text = Session["Calendar1.SelectedDate"].ToString(); DayPanel.Controls.Add(I); } Tips (igen)? [inlägget ändrat 2004-09-02 12:41:49 av Mossberg] Link to comment Share on other sites More sharing options...
PBL Posted September 2, 2004 Share Posted September 2, 2004 Sessions är av type Object och måste castas korrekt, om sessionsvärdet inte finns returneras null. Du försöker kalla på en metod där det inte finns någon referens till ett objekt, alltså får du ett "NullReferenceException". Så istället för ToString() kör med: I.Text = (string)Session["Calendar1.SelectedDate"]; Link to comment Share on other sites More sharing options...
Mossberg Posted September 2, 2004 Author Share Posted September 2, 2004 Ok tack, det funkar bättre...men jag får felet: Cannot convert type 'bool' to 'string' Hur fixar jag detta? Link to comment Share on other sites More sharing options...
PBL Posted September 2, 2004 Share Posted September 2, 2004 Istället för att casta till string får du casta till bool Link to comment Share on other sites More sharing options...
Mossberg Posted September 2, 2004 Author Share Posted September 2, 2004 Har en till som ställer till det (har börjat lite smått men fastnat): UT = UT + TBL.Columns[iNTB].ColumnName + "=" + CROW[iNTA][iNTB].ToString + "<br>"; Var ska jag placera String nu och hur ska uppbyggnaden i övrigt se ut? Link to comment Share on other sites More sharing options...
PBL Posted September 2, 2004 Share Posted September 2, 2004 ToString ska ha () det är det enda jag kan se på den raden när jag inte vet vad resten av koden är för något, är det en table/datagrid eller något annat ? Vad får du för fel ? [inlägget ändrat 2004-09-02 18:09:33 av PBL] Link to comment Share on other sites More sharing options...
Mossberg Posted September 3, 2004 Author Share Posted September 3, 2004 Har gått lite fort fram i boken (ska läsa om ett par kapitel idag, lite ovan att läsa...o nu har man läst i 4 veckor i sträck o d börjar bli lite segt) så jag har inte helkoll på koden o alla funkt. Jag får i a f felmed: Use of unassigned local variable 'UT' Koden i övrigt ser ut såhär: <%@ Page Language="c#" Debug="true" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SqlClient" %> <script runat="server"> void Page_Load(object obj, EventArgs e) { SqlConnection KOPPLING = new SqlConnection ("Data Source:henrik; Initial Catalog:bilar; Integrated Security:SSPI"); SqlDataAdapter TJOHO = new SqlDataAdapter ("SELECT * FROM EgnaBilar", KOPPLING); DataSet DS = new DataSet(); TJOHO.Fill(DS, "EgnaBilar"); DataTable TBL = DS.Tables["EgnaBilar"]; DataRow[] CROW = TBL.Select(null, null, DataViewRowState.CurrentRows); int INTA; int INTB; String UT; for (INTA = 0; INTA <= CROW.Length - 1; INTA++) { for (INTB = 0; INTB <= TBL.Columns.Count - 1; INTB++) { UT = UT + TBL.Columns[iNTB].ColumnName + "=" + CROW[iNTA][iNTB].ToString() + "<br>"; } } Response.Write(UT); } </script> <html> <body> </body> </html> Link to comment Share on other sites More sharing options...
Mol Posted September 3, 2004 Share Posted September 3, 2004 Det är inte alltid säkert att du kommer in i innersta for-loopen, där UT = UT + ... Därför finns det tillfällen där UT kan vara oinitierad. Sätt strängen till tom sträng där den deklareras... String UT = ""; ...så går det nog bättre. Link to comment Share on other sites More sharing options...
Mossberg Posted September 3, 2004 Author Share Posted September 3, 2004 Kanon, det funkar! Link to comment Share on other sites More sharing options...
dotgif Posted September 5, 2004 Share Posted September 5, 2004 Tänk på att du bör använda dig av StringBuilder när du lägger i hop stränger p g a att String allockerar om minne varje gång man ändrar storleken på strängen (lägger till tar bort etc), e g: // Lägg till using System.Text StringBuilder UT = new StringBuilder(); for (INTA = 0; INTA <= CROW.Length - 1; INTA++) { for (INTB = 0; INTB <= TBL.Columns.Count - 1; INTB++) { UT.Append(TBL.Columns[iNTB].ColumnName + "=" + CROW[iNTA][iNTB].ToString() + "<br>"); } } Response.Write(UT.ToString()); Mvh Jimmy [inlägget ändrat 2004-09-05 14:03:28 av dotgif] Link to comment Share on other sites More sharing options...
Mossberg Posted September 6, 2004 Author Share Posted September 6, 2004 Bra, sånt där har jag inte tänkt på alls, tack! /Henrik Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.