Я создаю свое первое приложение в Xamarin Forms, которое будет считывать информацию из базы данных SQL через веб-запрос. Я дошел до того, что успешно прочитал и отобразил информацию в приложении WinForms. Хотя в Xamarin Forms я не могу получить тот же результат.
На главной странице я вызываю:
var jobService = new JobService();
listView.ItemsSource = jobService.JobList(DatePicker.Date);
Затем в классе JobService это мой код.
class JobService
{
List<Job> jobs;
string userId;
string date;
public List<Job> JobList(DateTime datetime)
{
userId = 1234;
date = datetime.ToString("MM-dd-yyyy");
Client();
return jobs;
}
public void Client()
{
WebClient client = new WebClient();
Uri uri = new Uri("http://Location/webservice.php");
NameValueCollection parameters = new NameValueCollection();
parameters.Add("UserId", userId);
parameters.Add("Date", date);
client.UploadValuesCompleted += Client_UploadValuesCompleted;
client.UploadValuesAsync(uri, parameters);
}
public void Client_UploadValuesCompleted(object sender, UploadValuesCompletedEventArgs e)
{
jobs = JsonConvert.DeserializeObject<List<Job>>(Encoding.UTF8.GetString(e.Result));
}
В WinForms это мой код
private void Button_Click(object sender, EventArgs e)
{
WebClient client = new WebClient();
Uri uri = new Uri("http://Location/webservice.php");
NameValueCollection parameters = new NameValueCollection();
parameters.Add("UserId", 1234);
parameters.Add("Date", datetime.ToString("MM-dd-yyyy"));
client.UploadValuesCompleted += Client_UploadValuesCompleted;
client.UploadValuesAsync(uri, parameters);
}
private void Client_UploadValuesCompleted(object sender, UploadValuesCompletedEventArgs e)
{
List<Job> jobs = JsonConvert.DeserializeObject<List<Job>>(Encoding.UTF8.GetString(e.Result));
MessageBox.Show(jobs[0].Project); //Project is one of the properties of the Job Class
}
Это класс задания:
public class Job
{
[JsonProperty("Project")]
public string Project { get; set; }
[JsonProperty("Service")]
public string Service { get; set; }
[JsonProperty("Client")]
public string Client { get; set; }
[JsonProperty("StartTime")]
public string StartTime { get; set; }
[JsonProperty("EndTime")]
public string EndTime { get; set; }
[JsonProperty("Date")]
public string Date { get; set; }
}
При отладке решения Xamarin я заметил, что jobs
возвращается как null
. Возвращается ли он до завершения UploadValuesAsync
?
Я использую Visual Studio 2019 (16.6.0),. NET версии 4.8. Я тоже использую Newtonsoft. Json Packet.
Заранее спасибо!