BebeSaiyan Ответов: 1

'Itemimage1' имеет значение selectedvalue, которое является недопустимым, поскольку оно не существует в списке элементов. Имя параметра: значение часть 2


У меня есть проблема с этой ошибкой исключения на моем веб-сайте "itemImage1" имеет SelectedValue, который является недопустимым, потому что он не существует в списке элементов. Имя параметра: value.

Чтобы суммировать код, у меня есть две переключатели под названием гитара и бас. Если администратор выберет гитару, он сгенерирует указанный путь к файлу и будет искать изображения в этом месте. Затем он отобразит доступные изображения в раскрывающемся списке. То же самое касается баса, но с другим расположением.

Моя первая попытка с кодом, когда я выбираю гитарный радиобуттон, сработала отлично и отображает доступные изображения в выпадающем списке. Но когда я переключаюсь на басовый радиобуттон, он выдает мне ошибку исключения, о которой я упоминал выше.

Я попытался развязать его, например, установив datasource и selectedvalue в null, очистив элементы и установив selectedindex в -1. Но не все получается. Пожалуйста, посоветуйте или предоставьте решение для этого?

Что я уже пробовал:

Вот код:

protected void Page_Load(object sender, EventArgs e)
{

    ShowItemImages();
}

private void ShowItemImages()
{
    var imageList = new ArrayList();

    if (itemType1.Checked)
    {
        itemImage1.Items.Clear();
        itemImage2.Items.Clear();
        itemImage1.SelectedIndex = -1;
        itemImage2.SelectedIndex = -1;
        itemImage1.SelectedValue = null;
        itemImage2.SelectedValue = null;
        itemImage1.DataSource = null;
        itemImage1.DataBind();
        itemImage2.DataSource = null;
        itemImage2.DataBind();

        itemselectedValueGuitar1 = itemImage1.SelectedValue;
            itemselectedValueGuitar2 = itemImage2.SelectedValue;
            var images = Directory.GetFiles(Server.MapPath("~/Images/Brands/String Instrument Items/Guitar/"));

            foreach (var image in images)
            {
                var imageName = image.Substring(image.LastIndexOf(@"\") + 1);
                imageList.Add(imageName);
            }

            itemImage1.DataSource = imageList;
            itemImage1.DataBind();

            itemImage2.DataSource = imageList;
            itemImage2.DataBind();

            itemImage1.SelectedValue = itemselectedValueGuitar1;
            itemImage2.SelectedValue = itemselectedValueGuitar2;


    }
    else if (itemType2.Checked)
    {

        itemImage1.Items.Clear();
        itemImage2.Items.Clear();
        itemImage1.SelectedIndex = -1;
        itemImage2.SelectedIndex = -1;
        itemImage1.SelectedValue = null;
        itemImage2.SelectedValue = null;
        itemImage1.DataSource = null;
        itemImage1.DataBind();
        itemImage2.DataSource = null;
        itemImage2.DataBind();

        itemselectedValueBass1 = itemImage1.SelectedValue;
            itemselectedValueBass2 = itemImage2.SelectedValue;
            var images = Directory.GetFiles(Server.MapPath("~/Images/Brands/String Instrument Items/Bass/"));

            foreach (var image in images)
            {
                var imageName = image.Substring(image.LastIndexOf(@"\") + 1);
                imageList.Add(imageName);
            }

            itemImage1.DataSource = imageList;
            itemImage1.DataBind();

            itemImage2.DataSource = imageList;
            itemImage2.DataBind();

            itemImage1.SelectedValue = itemselectedValueBass1;
            itemImage2.SelectedValue = itemselectedValueBass2;

    }
}


Вот код aspx:

<tr>
                    <td style="width: 160px; height: 37px;">

                    Item Type:</td>

                    <td style="height: 37px">

                        <asp:RadioButton ID="itemType1" runat="server" Text="Guitar" AutoPostBack="True" GroupName="ItemType"/>
                        <asp:RadioButton ID="itemType2" runat="server" Text="Bass" AutoPostBack="True" GroupName="ItemType"/>

                    </td>
                </tr>
                <tr>
                    <td style="width: 160px; height: 37px;">

                    Item Image1:</td>

                    <td style="height: 37px">

                    <asp:DropDownList ID="itemImage1" runat="server" Width="300px">
                    </asp:DropDownList>
                    <br />
                    <asp:FileUpload ID="itemFileUpload1" runat="server" />

                    <asp:Button ID="itemUploadImage1" runat="server" Text="Upload Image" OnClick="itemUploadImage1_Click"/>

                    </td>
                </tr>
                <tr>
                    <td style="width: 160px; height: 37px;">

                    Item Image2:</td>

                    <td style="height: 37px">

                    <asp:DropDownList ID="itemImage2" runat="server" Width="300px"></asp:DropDownList>
                    <br />
                    <asp:FileUpload ID="itemFileUpload2" runat="server" />

                    <asp:Button ID="itemUploadImage2" runat="server" Text="Upload Image" OnClick="itemUploadImage2_Click"/>

                    </td>
                </tr>

1 Ответов

Рейтинг:
1

Karthik_Mahalingam

использовать Метод FindByValue[^] или ListItemCollection.Метод FindByText [^] чтобы проверить, присутствует ли предмет в коллекции.

пример:

string ValueToSet = "someValue";
           var targetItemByValue = itemImage1.Items.FindByValue(ValueToSet);
           if (targetItemByValue != null)
               targetItemByValue.Selected = true;

           //or


           string TextToSet = "someText";
           var targetItemByText = itemImage1.Items.FindByText(TextToSet);
           if (targetItemByText != null)
               targetItemByText.Selected = true;