none
Проблемы с RadioButtonList RRS feed

  • Общие обсуждения

  • Доброе утро! В ListView  есть RadioButtonList для выбора нужного пункта

    Во время ItemDataBound

     RadioButtonList variants = (RadioButtonList)e.Item.FindControl("variants");
    
            variants.DataBind();
            foreach (ListItem item in variants.Items)
            {
                if (item.Value == price.Text) { item.Selected = true; }
            }

    В этом случае, когда данные отправляются на сервер, RadioButtonList теряет выбранную позицию и показывает то, что выбрано в условии.

    Когда добавляю !IsPostBack, во время отправки получаю ошибку "Ссылка на объект не указывает на экземпляр объекта."

    Как можно решить данную проблему?

    25 сентября 2014 г. 5:43

Все ответы

  • А у вас именно обратная отправка происходит и где именно вы добавляете проверку на PostBack?

    Сделаем содержимое сообщества лучше, вместе!

    25 сентября 2014 г. 5:50
    Модератор
  • Выбранный пункт я получаю во время ItemCommand, когда пользователь нажимает на LinkButton

    а !IsPostBack добавляю для

    variants.DataBind();

    25 сентября 2014 г. 6:00
  • Попробуйте и цикл тоже отключить при обратной отправке, что будет тогда. Также в отладчике посмотрите на каком объекте происходит исключение, что является null. Сложно помочь, имея лишь кусок кода.

    Сделаем содержимое сообщества лучше, вместе!

    25 сентября 2014 г. 6:21
    Модератор
  • Хорошо, весь код с RadioButtonList

     <asp:RadioButtonList ID="variants" runat="server" DataSourceID="variantssource" DataTextField="Volume" DataValueField="Price" RepeatDirection="Horizontal" >
                            
                        </asp:RadioButtonList>
                 
        <asp:SqlDataSource ID="variantssource" runat="server" ConnectionString="<%$ ConnectionStrings:connectiondb %>" SelectCommand="SELECT * FROM [Products] Where [ProductName]=@prname Order by [Volume]">
            <SelectParameters>
                <asp:Parameter Name="prname" Type="String" />
            </SelectParameters>
        </asp:SqlDataSource>

      Label price = (Label)e.Item.FindControl("price");
          
          
            Label prname = (Label)e.Item.FindControl("prname");
            SqlDataSource variantssource = (SqlDataSource)e.Item.FindControl("variantssource");
            variantssource.SelectParameters["prname"].DefaultValue = prname.Text;
            RadioButtonList variants = (RadioButtonList)e.Item.FindControl("variants");
    
            variants.DataBind();
            foreach (ListItem item in variants.Items)
            {
                if (item.Value == price.Text) { item.Selected = true; }
            }


    • Изменено Program-s.g 25 сентября 2014 г. 8:16
    25 сентября 2014 г. 7:57
  • А вы посмотрели на какой строке выбрасывает исключение?

    Сделаем содержимое сообщества лучше, вместе!

    25 сентября 2014 г. 8:00
    Модератор
  • когда

    if (Page.IsPostBack == false) { variants.DataBind(); }

    исключение в строке cmd.Parameters.AddWithValue("vol", list.SelectedItem.Text);

    почему-то данные теряются когда для radiobtnlist autopostback=true , после перезагрузки

    ничего не выбрано,понятно почему возникает исключение. Viewstate я не отключал


    • Изменено Program-s.g 25 сентября 2014 г. 8:13
    25 сентября 2014 г. 8:12