2012-02-20 13 views
9

Potrzebuję zbudować listę przycisków opcji, na podstawie danych, które zwracam z mojego DB. Każdy przycisk musi mieć przypisaną wartość, którą mogę wydostać na podstawie wybranego przycisku.Ustaw właściwość wartość RadioButton

Idealnie byłoby po prostu użyć kontrolki RadioButtonList, jednak muszę mieć bardzo niestandardowy układ, który nie wydaje się być w stanie obsłużyć RadioButtonList.

Alternatywą może być utworzenie indywidualnych RadioButton s i zawinięcie ich w panelu w celu ich pogrupowania. Jednak nie wydaje się, że właściwość Value ma wartość RadioButton?

Czy istnieje alternatywny sposób ustawienia wartości dla elementu sterującego RadioButton? Alternatywnie, możesz całkowicie dostosować wyjście do formatu RadioButtonList.

W tej chwili myślę, że muszę uciekać się do używania przycisków radiowych HTML z runat="server", musi być lepszy sposób ...?

+0

Dobre rozwiązanie, dziękuję. Gdzie teraz są formularze internetowe ... –

Odpowiedz

3

Można by utworzyć własną klasę przycisk radiowy, który rozciąga się jeden standardowy i dodaje właściwość wartość:

public class ValueCheckBox : System.Web.UI.WebControls.RadioButton 
{ 
    public string Value { get; set; } 
} 
+0

Podoba mi się rozwiązanie, czy jest jakaś korzyść z używania tego na Attributes.Add jak sugerują Rahul i Marchin? Obaj wydają się wykonywać tę pracę. –

+0

To sprawi, że właściwość Wartość będzie łatwiejsza do zarządzania na dłuższą metę, jeśli planujesz ponownie użyć formantu w innym miejscu. Mam na myśli, po prostu porównaj 'radioButton.Attributes.Add (" Key "," Value ");' i 'radioButton.Value =" value ";'. – Rahul

+0

Wygląda na to, że atrybuty mają być używane dla atrybutów HTML, które są wysyłane do przeglądarki http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.attributes.aspx –

-1

Element sterujący RadioButton nie ma właściwości Value, to prawda. Zamiast tego należy użyć Checked.

+1

Tak, ale zaznaczone po prostu informuje mnie, czy pole zostało sprawdzone, czy nie. Przyciski są dynamiczne, więc muszę zapisać powiązaną wartość. –

+0

Co sądzisz o "wartości Associate"? Czy chcesz zrobić jakiś rodzaj wiązania? Ta właściwość 'Checked' może być ustawiona, nie tylko odczytana. – MarcinJuraszek

+0

Mam na myśli to, że jeśli mam 3 przyciski opcji, każdy reprezentuje wiersz w mojej bazie danych. Gdy użytkownik sprawdzi jeden z nich, muszę sprawdzić, który przycisk został sprawdzony i powiązać go z rekordem w mojej bazie danych. Tak naprawdę muszę przechowywać identyfikator wraz z przyciskiem radiowym. –

2

Zawsze można spróbować użyć atrybutów, aby zapisać skojarzony wartość. np)

radioButton.Attributes.Add("Key", "Value"); 

Ustaw Property Group być taka sama dla wszystkich przycisków radiowych i powinno być dobrze iść. Pamiętaj tylko, że ASP .Net ma niewielki problem, jeśli poszczególne przyciski radiowe znajdują się w różnych wierszach repeatera, gridview lub jakiegoś takiego stylu siatki.

+0

Ach tak, zapomniałem, że mogę użyć Attributes.Add.Czy jest jakaś przewaga nad wykorzystaniem sugestii Travora Pilleya do rozszerzenia kontroli? Oba będą działać, rozdarte między nimi. –

1

Do szybkiego i brudnego zestawu przycisków radiowych STATIC.
Użyłem pola Tag w oknie Właściwości, aby ręcznie zdefiniować wartość.

Jeśli korzystasz z DB, prawdopodobnie powiąż z nim swoje dane. Nigdy nie wiesz, kiedy zmienisz klucz lub nazwę.

Powiązane problemy