2013-04-03 19 views
9

Użyłem gridview na mojej stronie aspx .. W tym mam listę z sześcioma przyciskami radiowymi w jednej komórce wyrównanymi poziomo.Czy można programowo ukryć konkretną pozycję listy radiobuttonlist?

Potrzebuję ukryć pierwszy przycisk opcji. Jak to osiągnąć programowo?

<asp:GridView ID="CrowdRatingGrid" runat="server" AutoGenerateColumns="false" AllowPaging="true" PageSize="4" OnPageIndexChanging="CrowdRatingGrid_PageIndexChanging" ViewStateMode="Enabled"> 

<PagerSettings Mode="Numeric" PageButtonCount="4" /> 
<Columns> 
<asp:TemplateField> 
    <HeaderTemplate> 
    Rating 
    </HeaderTemplate> 
    <ItemTemplate> 
    <asp:RadioButtonList runat="server" ID="Rating" SelectedValue='<%# Bind("rating_id") %>' 
          RepeatDirection="Horizontal"> 
          <asp:ListItem Value="0" /> 
          <asp:ListItem Value="1" /> 
          <asp:ListItem Value="2" /> 
          <asp:ListItem Value="3" /> 
          <asp:ListItem Value="4" /> 
          <asp:ListItem Value="5" /> 
         </asp:RadioButtonList> 
        </ItemTemplate> 
       </asp:TemplateField> 
     </Columns> 
     </asp:GridView> 

Potrzebuję, aby pozycja listy o wartości = 0 była ukryta. Jak to osiągnąć?

+2

Jeśli potrzebujesz inną logikę na konkretne pozycje nie używać 'RadioButtonList' ale pojedynczy [' RadioButtons'] (http: // msdn .microsoft.com/en-us/library/system.web.ui.webcontrols.radiobutton.aspx). Możesz użyć kontrolki kontenera, takiej jak 'Panel' i odpowiedniego CSS do układu. Użyj ['GroupName'] (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.radiobutton.groupname.aspx), gdy tylko jedna opcja jest możliwa z listy dostępnych opcji . –

Odpowiedz

10

Tak, można ukryć jedną ustawiając jego Enabled właściwość false:

Rating.Items[0].Enabled = false; 

Montaż na podstawie uwag przez OP. Aby całkowicie pozbyć się go trzeba to zrobić:

Rating.Items.RemoveAt(0); 

i wtedy, gdy chcemy go z powrotem trzeba to zrobić:

Rating.Items.Insert(0, "0"); 
+0

Potrzebuję go ukryć ... Twój kod po prostu wyłącza radiobutton –

+0

@Coder, aby to zrobić, musisz "usunąć" go, a następnie "włożyć" go z powrotem, gdy jest to istotne. –

+0

@Coder, zobacz moją edycję. –

2

EDIT: Ok, ja wbiły to trochę głębiej i zobacz, jak .NET renderuje kontrolkę RadioButtonList, gdy ustawisz ją na poziomą (jest to tabela z <td> dla każdego przedmiotu).

Spróbuj tego:

var bli = Rating.Items[ 0 ]; 
bli.Attributes.Add("hidden", "hidden"); 
+0

Potrzebuję go ukryć ... Twój kod po prostu wyłącza radiobutton –

+0

Czy możesz wyjaśnić różnicę między ukrywaniem i wyłączaniem przycisku radiowego? –

+0

ukrywanie oznacza, że ​​radibutton nie będzie widoczny na ekranie ... Wyłączenie oznacza, że ​​będzie widoczny, ale nie można go sprawdzić. – Xavier

0

To działa dobrze.

RadioButtonList.Items[index].Enable=True/False; 

Ex:

rdTypePackage.Items[1].Enabled = false; 
1
radioListID.Items[index].Enabled = true/false; 

Będzie ona działać w 100%.

0

Stary wątek, choć do osiągnięcia tego celu można zrobić:

//Ensure the item is disabled  
rblRating.Items[0].Enabled = false; 
//Ensure the item is not selected 
rblRating.Items[0].Selected = false; 
//next row of code is hiding your radio button list item through css 
rblRating.Items[0].Attributes[HtmlTextWriterStyle.Visibility] = "hidden";