2016-11-28 5 views
0
angezeigt

ich einen C# -Code habe einige Daten aus einer SQL-Tabelle zu erhalten, diese Daten durch mssql getdate() das Problem hier gefüllt sind, ist, dass meine Daten in der folgenden Struktur dargestellt werden:Datetime wird nicht wie erwartet

/Date(1480343496517)/ 

Und was ich erwarte, ist dies:

2016-11-28 08:13:23.820 //This is what I get executing my query in MSSQL 

Das ist mein voller Code:

C# Klasse

public MyDate(DateTime date) 
{ 
    Date = date; 
} 
public DateTime Date { get; set; } 

WebMethod

[WebMethod] 
public string ShowDate() 
{ 
    DataTable dt = new DataTable(); 
    dt = conn.CheckTable("date"); 
    MyDate fch; 

    List<MyDate> list = new List<MyDate>(); 

    for (int i = 0; i < dt.Rows.Count; i++) 
    { 
     fch = new Fecha(); 
     fch.Date = Convert.ToDateTime(dt.Rows[i]["Date"]); 

     list.Add(fch); 
     fch = null; 
    } 

    JavaScriptSerializer js = new JavaScriptSerializer(); 
    string lines = js.Serialize(list); 
    return lines; 
} 

TABLE

public DataTable CheckTable(string table) 
{ 
    dt = new DataTable(); 
    ds = new DataSet(); 
    string sql = ""; 

    switch (table) 
    { 
     case "date": 
      sql = "SELECT Date FROM dbo.Table_1"; 
      break; 
    } 

    try 
    { 
     Open(); 
     SqlDataAdapter da = new SqlDataAdapter(sql, conn); 
     da.Fill(ds); 
     dt = ds.Tables[0]; 
    } 
    catch (Exception ex) 
    { 

    } 
    finally 
    { 
     Close(); 
    } 
    return dt; 
} 

Und meine JS-Funktion:

$.ajax({ 
    type: 'POST', //POST | GET 
    url: "WebService.asmx/ShowDate", //Direccion del ws 
    dataType: 'json', 
    contentType: 'application/json', 
    timeout: 600000, 
    error: function (xhr) { 
     $('#dates').html('<option>Error</option>'); 
    }, 
    success: function (data) { 
     var datas = JSON.parse(data.d); 
     for (var i = 0; i < datos.length; i++) { 
     var myDate= datas[i].Date; 

     options += '<option value ="' + myDate+ '">'; 
     options += myDate; 
     options += '</option>'; 
     } 
     $('#dates').html(options); 
    } 
}); 

Was mache ich falsch und was kann ich dagegen tun lösen?

+0

Ich vermute, der JavaScriptSerializer konvertiert die DateTime in Millisekunden, so dass es einfach als JSON an den Client gesendet werden kann – adeneo

Antwort

0

Ich weiß nicht, was die anderen Klassen, die Sie verwenden, aber wenn Sie nur eine Liste von Daten aus der Abfrage wollen, dann sollte dies tun es ...

[WebMethod] 
public string ShowDate() 
{ 
    DataTable dt = new DataTable(); 
    dt = conn.CheckTable("date"); 

    List<DateTime> list = new List<DateTime>(); 

    for (int i = 0; i < dt.Rows.Count; i++) 
    { 
     list.Add(Convert.ToDateTime(dt.Rows[i]["Date"]).ToString()); 
    } 

    JavaScriptSerializer js = new JavaScriptSerializer(); 
    string lines = js.Serialize(list); 
    return lines; 
} 

dann in der JavaScript ändern, diese eine Zeile ...

var myDate = datas[i]; 

die Web-Methode wird nun nur eine serialisierte Liste der Daten zurückgeben, so dass keine Notwendigkeit, sich eine .date Eigenschaft der Liste mehr Objekte.

Verwandte Themen