检索MAUI XAML页中ListView内的标签值

euoag5mw  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(181)

我有一个从REST API填充的ListView。我需要向另一个页面发送一个参数,以便根据查询使用REST API填充另一个ListView。
列表视图结构如下所示:

<ListView x:Name="Clientes_List" 
              RowHeight="60"
              HeightRequest="600"
              ItemTapped="TapCliente">
        
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <StackLayout Orientation="Vertical" Padding="8,0,8,0">
                        <Label Text="{Binding Marca}" TextColor="#45678e" FontSize="14" LineBreakMode="TailTruncation"></Label>
                        <Label Text="{Binding ID}" TextColor="#FF0000" FontSize="12" x:Name="LtIdCliente"></Label>
                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

需要传递的参数是在LtIdCliente标签的文本值中声明的参数。
这就是我的行动:

public void TapCliente(object sender, ItemTappedEventArgs e)
{
    Label lbClienteId = (Label)Clientes_List.FindByName("LtIdCliente");

    string clienteId = lbClienteId.Text;

    Navigation.PushModalAsync(new Facturas(clienteId));

}

我得到了一个没有设置为示例的对象错误,所以它没有从标签中获取值。

System.NullReferenceException: 'Object reference not set to an instance of an object.'

接收器页面"Facturas.xaml"将以这种方式读取参数:

public partial class Facturas : ContentPage
{
public Facturas(string idCliente)
{
    InitializeComponent();

    if (Connectivity.Current.NetworkAccess == NetworkAccess.None)
    {
        lblInternet.Text = "Tu conexión a internet es deficiente o nula, no podemos realizar consultas.";
    }
    else
    {
        lblInternet.Text = "Conexión estable con el servidor de Haif.";

        CargarData(idCliente);

    }

}

public async void CargarData(string idCliente)
{
    var contenido = "";
    
    HttpClient cliente = new HttpClient();
    var restUrl = "https://*************/api/FacturaCliente?id=" + idCliente;
    cliente.BaseAddress = new Uri(restUrl);

    cliente.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
    HttpResponseMessage respuesta = await cliente.GetAsync(restUrl);
    contenido = await respuesta.Content.ReadAsStringAsync();
    var items = JsonConvert.DeserializeObject<List<Factura>>(contenido);
    Facturas_List.ItemsSource = items;
}

#region Clase Facturas

public class Factura
{
    public int ID { get; set; }
    public string NumeroFactura { get; set; }
    public string Total { get; set; }
}

#endregion
}

通过该参数的正确方法是什么?

i34xakig

i34xakig1#

我从错误的Angular 看待这个问题。
我已经在类中有了数据,所以我所需要做的就是将它作为参数传递:

public void TapCliente(object sender, ItemTappedEventArgs e)
{

    var clte = (Cliente)Clientes_List.SelectedItem;

    Navigation.PushModalAsync(new Facturas(clte.ID.ToString()));

}

相关问题