问题描述
我正在使用带有开关的数据网格,并且我想为每个切换到我的 viewmodel 中其他位置的开关传递某些值。这将在按钮单击时调用。我要保存的值是公司名称和订单号
XAML 代码:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:dg="clr-namespace:Xamarin.Forms.DataGrid;assembly=Xamarin.Forms.DataGrid"
x:Class="Mist_Management.Views.ApprovalPage"
Title="Approvals">
<StackLayout Padding="5">
<ContentView>
<ScrollView Orientation="Horizontal">
<dg:DataGrid x:Name="ApprovalGrid" ItemsSource="{Binding MistHeaders}" SelectedItem="{Binding SelectedItem}"
RowHeight="70" HeaderHeight="50" BorderColor="#CCCCCC" HeaderBackground="#E0E6F8"
HeightRequest="1000" ActiveRowColor="#8899AA">
<x:Arguments>
<ListViewCachingStrategy>RetainElement</ListViewCachingStrategy>
</x:Arguments>
<dg:DataGrid.HeaderFontSize>
<OnIdiom x:TypeArguments="x:Double">
<OnIdiom.Tablet>15</OnIdiom.Tablet>
<OnIdiom.Phone>12</OnIdiom.Phone>
</OnIdiom>
</dg:DataGrid.HeaderFontSize>
<dg:DataGrid.Columns>
<dg:DataGridColumn Title="Tag" Width="100">
<dg:DataGridColumn.CellTemplate>
<DataTemplate>
<Switch IsToggled="{Binding .}" HorizontalOptions="Center"/>
</DataTemplate>
</dg:DataGridColumn.CellTemplate>
</dg:DataGridColumn>
<dg:DataGridColumn Title="Company" PropertyName="Company" Width="200"/>
<dg:DataGridColumn Title="Payment Type" PropertyName="PaymentType" Width="150"/>
<dg:DataGridColumn Title="Received Date" PropertyName="RecievedDate" Width="150"/>
<dg:DataGridColumn Title="Request No" PropertyName="RequestNo" Width="150"/>
<dg:DataGridColumn Title="supplier Name" PropertyName="supplierName" Width="200"/>
<dg:DataGridColumn Title="Quote No" PropertyName="QuoteNo" Width="150"/>
<dg:DataGridColumn Title="Total" PropertyName="Total" Width="150"/>
<dg:DataGridColumn Title="Justification" PropertyName="Justification" Width="300"/>
<dg:DataGridColumn Title="Order Number" PropertyName="OrderNumber" Width="150"/>
</dg:DataGrid.Columns>
</dg:DataGrid>
</ScrollView>
</ContentView>
<!--<dg:DataGrid x:Name="Grid" ItemsSource="{Binding OtherDetails}"
RowHeight="70" HeaderHeight="50" BorderColor="#CCCCCC" HeaderBackground="#E0E6F8"
HeightRequest="1000" ActiveRowColor="#8899AA">
<x:Arguments>
<ListViewCachingStrategy>RetainElement</ListViewCachingStrategy>
</x:Arguments>
<dg:DataGrid.HeaderFontSize>
<OnIdiom x:TypeArguments="x:Double">
<OnIdiom.Tablet>15</OnIdiom.Tablet>
<OnIdiom.Phone>12</OnIdiom.Phone>
</OnIdiom>
</dg:DataGrid.HeaderFontSize>
<dg:DataGrid.Columns>
<dg:DataGridColumn Title="Attachment Name" PropertyName="AttachmentName" Width="200"/>
<dg:DataGridColumn Title="Attachment Google View" PropertyName="AttachmentGoogleView" Width="150"/>
</dg:DataGrid.Columns>
</dg:DataGrid>-->
<StackLayout Orientation="Horizontal" HorizontalOptions="Center">
<Button Text="Approval" Command="{Binding ApprovalButton_Clicked}"/>
<Button Text="Reject" Command="{Binding RejectButton_Clicked}"/>
<Button Text="To Be Corrected" Command="{Binding ToBeCorrectedButton_Clicked}"/>
</StackLayout>
<Button Text="Attachments" HorizontalOptions="Center" Command="{Binding AttachmentButton_Clicked}"/>
</StackLayout>
</ContentPage>
视图模型代码:
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Net.Http;
using System.Threading.Tasks;
using System.Windows.Input;
using Xamarin.Forms;
using Mist_Management.Models;
using Mist_Management.AttachmentModel;
using System.Diagnostics;
namespace Mist_Management.viewmodels
{
public class ApprovalPageviewmodel : INotifyPropertyChanged
{
public ObservableCollection<Models.Table> MistHeaders { get; set; }
public ObservableCollection<AttachmentModel.Table> OtherDetails { get; set; }
public ApprovalPageviewmodel()
{
MistHeaders = new ObservableCollection<Models.Table>();
OtherDetails = new ObservableCollection<AttachmentModel.Table>();
GetData();
}
private async void GetData()
{
string requestUrl = "https://mist.zp.co.za:6502/MIST.svc/head/M@H$@203@R";
using (var client = new HttpClient())
{
HttpResponseMessage response = await client.GetAsync(requestUrl);
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
string content = await response.Content.ReadAsstringAsync();
MistHeaders root = JsonConvert.DeserializeObject<MistHeaders>(content);
List<Models.Table> dates = root.Table;
foreach (var item in dates)
{
MistHeaders.Add(item);
}
}
}
}
public Models.Table selectedItem;
public Models.Table SelectedItem
{
get { return selectedItem; }
set
{
selectedItem = value;
OnPropertyChanged("SelectedItem");
Debug.WriteLine(value.Company);
Debug.WriteLine(value.OrderNumber);
}
}
private async void GetAttachments()
{
string requestUrl = "https://mist.zp.co.za:6502/MIST.svc/ATT/M@H$@203@R/" + selectedItem.OrderNumber +
"/" + selectedItem.Company;
using (var client = new HttpClient())
{
HttpResponseMessage response = await client.GetAsync(requestUrl);
try
{
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
string content = await response.Content.ReadAsstringAsync();
Attachment root = JsonConvert.DeserializeObject<Attachment>(content);
List<AttachmentModel.Table> dates = root.Table;
foreach (var item in dates)
{
OtherDetails.Add(item);
}
}
}
catch
{
Debug.WriteLine(requestUrl);
}
}
}
private async void SendApprovals()
{
string requestUrl = "https://mist.zp.co.za:6502/MIST.svc/AUT/M@H$@203@R/" + selectedItem.OrderNumber +
"/" + selectedItem.Company;
using (var client = new HttpClient())
{
HttpResponseMessage response = await client.GetAsync(requestUrl);
}
}
public ICommand AttachmentButton_Clicked
{
get
{
return new Command(() =>
{
GetAttachments();
});
}
}
public ICommand ApprovalButton_Clicked
{
get
{
return new Command(() =>
{
});
}
}
public ICommand RejectButton_Clicked
{
get
{
return new Command(() =>
{
});
}
}
public ICommand ToBeCorrectedButton_Clicked
{
get
{
return new Command(() =>
{
});
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string property)
{
if (PropertyChanged != null)
PropertyChanged(this,new PropertyChangedEventArgs(property));
}
}
}
型号代码:
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Text;
namespace Mist_Management.Models
{
public class Table
{
[JsonProperty("Company")]
public string Company { get; set; }
[JsonProperty("Payment Type")]
public string PaymentType { get; set; }
[JsonProperty("Recieved Date")]
public string RecievedDate { get; set; }
[JsonProperty("Request No.")]
public string RequestNo { get; set; }
[JsonProperty("supplier Name")]
public string supplierName { get; set; }
[JsonProperty("Quote No.")]
public string QuoteNo { get; set; }
[JsonProperty("Total")]
public string Total { get; set; }
[JsonProperty("Justification")]
public string Justification { get; set; }
[JsonProperty("Order Number")]
public string OrderNumber { get; set; }
bool _isChecked;
}
public class MistHeaders
{
public List<Table> Table { get; set; }
}
}
任何帮助将不胜感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)