Несколько категорий со списком со списком - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть 2 комбинированных списка с 2 категориями и 2 типами подкатегорий. Категории Combobox содержат «Usia» и «Serial». Принимая во внимание, что комбинированный список подкатегорий получает данные с сервера json. Если вы выберете «Usia» в категории со списком, он отобразит «ratingBox» в подкатегории со списком, а если вы выберете «Serial» в категории со списком, он отобразит «serialBox» в подкатегории со списком.

XAML:

<StackPanel x:Name="comboBoxStack" Grid.Row="0" Margin="30,15,0,0" Orientation="Horizontal">
                <ComboBox x:Name="kategoriBox" PlaceholderText="Kategori" FontSize="14" SelectionChanged="KategoriBox_SelectionChanged">
                    <ComboBoxItem>Usia</ComboBoxItem>
                    <ComboBoxItem>Serial</ComboBoxItem>
                </ComboBox>
                <ComboBox x:Name="ratingBox" Margin="15,0,0,0" PlaceholderText="Pilih Usia" ItemsSource="{x:Bind RatingList}" FontSize="14" SelectionChanged="RatingBox_SelectionChanged"/>
                <ComboBox x:Name="serialBox" Margin="15,0,0,0" PlaceholderText="Pilih Serial" ItemsSource="{x:Bind SerialList}" FontSize="14" SelectionChanged="SerialBox_SelectionChanged"/>
            </StackPanel>

Код:

List<Rating> RatingList = new List<Rating>();
List<Serial> SerialList = new List<Serial>();
string umurID = "";
string serialID = "";

private void KategoriBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var comboBoxItem = kategoriBox.Items[kategoriBox.SelectedIndex] as ComboBoxItem;
            if (comboBoxItem != null)
            {
                string selectedcmb = comboBoxItem.Content.ToString();
                if(selectedcmb == "Usia")
                {
                    ratingBox.Visibility = Visibility.Visible;
                    serialBox.Visibility = Visibility.Collapsed;
                    RatingC();
                    ratingBox.SelectedIndex = -1;
                }
                else if(selectedcmb == "Serial")
                {
                    ratingBox.Visibility = Visibility.Collapsed;
                    serialBox.Visibility = Visibility.Visible;
                    SerialC();
                    serialBox.SelectedIndex = -1;
                }
            }
            else
            {
                ratingBox.Visibility = Visibility.Visible;
                serialBox.Visibility = Visibility.Collapsed;
                RatingC();
            }
        }

        private async void RatingC()
        {
            serialID = "";
            ConnectionProfile connections = NetworkInformation.GetInternetConnectionProfile();
            if (connections != null && connections.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess)
            {
                try
                {
                    string urlPath = "https://..../Fetch/rating";
                    var httpClient = new HttpClient(new HttpClientHandler());

                    var values = new List<KeyValuePair<string, string>>
                    {

                    };

                    httpClient.DefaultRequestHeaders.TryAddWithoutValidation("SCH-API-KEY", "SCH_KEnaBiDeplebt");
                    var response = await httpClient.PostAsync(urlPath, new FormUrlEncodedContent(values));
                    response.EnsureSuccessStatusCode();

                    if (!response.IsSuccessStatusCode)
                    {
                        busyindicator.IsActive = false;
                    }

                    string jsonText = await response.Content.ReadAsStringAsync();
                    JsonObject jsonObject = JsonObject.Parse(jsonText);
                    JsonArray jsonData = jsonObject["data"].GetArray();

                    foreach (JsonValue groupValue in jsonData)
                    {
                        JsonObject groupObject1 = groupValue.GetObject();
                        string id = groupObject1["id"].GetString();
                        string name = groupObject1["rating"].GetString();

                        Rating rate = new Rating();
                        rate.ID = id;
                        rate.Name = name;

                        RatingList.Add(new Rating()
                        {
                            ID = rate.ID,
                            Name = rate.Name
                        });
                    }

                }
                catch
                {
                    busyindicator.IsActive = false;
                }
            }
        }

        private async void SerialC()
        {
            umurID = "";
            ConnectionProfile connections = NetworkInformation.GetInternetConnectionProfile();
            if (connections != null && connections.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess)
            {
                try
                {
                    string urlPath = "https://.../Fetch/serial";
                    var httpClient = new HttpClient(new HttpClientHandler());

                    var values = new List<KeyValuePair<string, string>>
                    {

                    };

                    httpClient.DefaultRequestHeaders.TryAddWithoutValidation("SCH-API-KEY", "SCH_KEnaBiDeplebt");
                    var response = await httpClient.PostAsync(urlPath, new FormUrlEncodedContent(values));
                    response.EnsureSuccessStatusCode();

                    if (!response.IsSuccessStatusCode)
                    {
                        busyindicator.IsActive = false;
                    }

                    string jsonText = await response.Content.ReadAsStringAsync();
                    JsonObject jsonObject = JsonObject.Parse(jsonText);
                    JsonArray jsonData = jsonObject["data"].GetArray();

                    foreach (JsonValue groupValue in jsonData)
                    {
                        JsonObject groupObject1 = groupValue.GetObject();
                        string id = groupObject1["id"].GetString();
                        string name = groupObject1["nama"].GetString();
                        string slug = groupObject1["slug"].GetString();

                        Serial seri = new Serial();
                        seri.ID = id;
                        seri.Name = name;
                        seri.Slug = slug;

                        SerialList.Add(new Serial()
                        {
                            ID = seri.ID,
                            Name = seri.Name,
                            Slug = seri.Slug
                        });
                    }

                }
                catch
                {
                    busyindicator.IsActive = false;
                }
            }
        }

        private void RatingBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if(ratingBox.SelectedIndex != -1)
            {
                var comboBox = sender as ComboBox;
                Rating value = comboBox.SelectedItem as Rating;
                umurID = value.ID;
            }
        }

        private void SerialBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if(serialBox.SelectedIndex != -1)
            {
                var comboBox = sender as ComboBox;
                Serial value = comboBox.SelectedItem as Serial;
                serialID = value.ID;
            }
        }

Rating.cs:

class Rating
    {
        public string ID { get; set; }

        public string Name { get; set; }

        public override string ToString()
        {
            return this.Name;
        }
    }

Serial.cs такой же, как Rating.cs

У меня проблема: если я выбрал «Usia» в категории со списком, то подкатегория со списком для этой категории может плавно отображать данные на сервере, затем я выбираю «Последовательный» в категории со списком, съедая комбобокс Подкатегории для этой категории могут отображать данные на сервере с плавно. Затем я снова выбрал «Usia» в категории со списком, поэтому, когда я нажимаю на подкатегорию, появляется сообщение об ошибке, как показано ниже: error message И вот мое видео на экране ПК для моей проблемы: https://1drv.ms/v/s!Auqiv8Ukng7UgP8Fj-LMDa9skV3yfA

В видео при повторном выборе «Usia» в категории со списком (в конце видео) будет отображаться сообщение об ошибке, как показано выше Как с этим справиться?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...