Сделать текстовый текст видимым, когда пользователь проверяет кнопку "Другое"

У меня есть переключатель, который динамически получает свои значения из базы данных.

Одно из значений базы данных называется "Другое".

Если пользователь проверяет этот переключатель " Other ", сделайте текстовое поле видимым, чтобы пользователь мог ввести его.

Кто-нибудь знает как это сделать?

Код ниже не работает.

Protected Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemDataBound
 If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
 Dim anstype As HiddenField = e.Item.FindControl("HiddenField1")
 'Dim questionid As Label = e.Item.FindControl("Label3")
 Dim questionid As HiddenField = e.Item.FindControl("HiddenField2")
 Dim rbl As RadioButtonList = e.Item.FindControl("RadioButtonList1")
 Dim cbl As CheckBoxList = e.Item.FindControl("CheckBoxList1")
 Dim txt As TextBox = e.Item.FindControl("TextBox1")
 Dim ds As DataSet = GetDataSet(questionid.Value)
 Select Case anstype.Value
 Case "S"
 rbl.Visible = True
 cbl.Visible = False
 txt.Visible = False
 rbl.DataSource = ds
 rbl.DataTextField = "Choice"
 rbl.DataValueField = "ChoiceID"
 rbl.DataBind()
 Case "M"
 rbl.Visible = False
 cbl.Visible = True
 txt.Visible = False
 cbl.DataSource = ds
 cbl.DataTextField = "Choice"
 cbl.DataValueField = "ChoiceID"
 cbl.DataBind()
 Case "T"
 rbl.Visible = False
 cbl.Visible = False
 txt.Visible = True
 End Select
 End If
End Sub

Protected Sub RadioButton1_OnCheckedChanged(sender As Object, e As EventArgs)
 Dim RadioButton1 As RadioButtonList = TryCast(sender, RadioButtonList)
 If RadioButton1 IsNot Nothing Then
 If RadioButton1.SelectedValue = "Other" Then
 Dim datalistrow As DataList = TryCast(RadioButton1.NamingContainer, DataList)
 Dim TxtOther As TextBox = TryCast(datalistrow.FindControl("TxtOther"), TextBox)
 TxtOther.Visible = True
 End If
 End If

End Sub

Я также хотел бы добавить, что значение переключателя для другого - 33.

Другими словами,

Большое спасибо

2 ответа

Таирок,

значения, которые вы привязываете к переключателю в качестве

rbl.DataTextField = "Choice"
 rbl.DataValueField = "ChoiceID"

Например, значения базы данных - Val1, Val2, Val3 и другие

из этих 4 вариантов, который является выбранным значением radioobuttonlist, где вы устанавливаете..

если вы устанавливаете выбранное значение вашего радиообмена в событии DataList1_ItemDataBound.

вы можете написать код следующим образом.

Protected Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemDataBound
 If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
 Dim anstype As HiddenField = e.Item.FindControl("HiddenField1")
 'Dim questionid As Label = e.Item.FindControl("Label3")
 Dim questionid As HiddenField = e.Item.FindControl("HiddenField2")
 Dim rbl As RadioButtonList = e.Item.FindControl("RadioButtonList1")
 Dim cbl As CheckBoxList = e.Item.FindControl("CheckBoxList1")
 Dim txt As TextBox = e.Item.FindControl("TextBox1")
 Dim ds As DataSet = GetDataSet(questionid.Value)
 Select Case anstype.Value
 Case "S"
 rbl.Visible = True
 cbl.Visible = False
 txt.Visible = False
 rbl.DataSource = ds
 rbl.DataTextField = "Choice"
 rbl.DataValueField = "ChoiceID"
 rbl.DataBind()

 // you juss binded the radiobuttonlist but you havent set the selected value..
 // there should be selected value "Other" so that based on the selected value we 
 //can make the textbox1 Visible

 Case "M"
 rbl.Visible = False
 cbl.Visible = True
 txt.Visible = False
 cbl.DataSource = ds
 cbl.DataTextField = "Choice"
 cbl.DataValueField = "ChoiceID"
 cbl.DataBind()
 Case "T"
 rbl.Visible = False
 cbl.Visible = False
 txt.Visible = True
 End Select
 End If
End Sub

Если вы не выбрали выбранное значение радиоблока в событии RowDataBound. После того, как список радиокнопок будет загружен Контентом

например, например

Строка 1) Val1 Val2 Val3 Другое

Строка 2) Val1 Val2 Val3 Другое

Строка 3) Val1 Val2 Val3 Другое

Когда пользователь выбирает опцию "Другой" в списке радиокассет, тогда в событии Radiobutton OnSelectedIndexChanged нужно писать вот так.

Protected Sub RadioButtonList1_OnSelectedIndexChanged(sender As Object, e As EventArgs)
 Dim RadioButton1 As RadioButtonList = TryCast(sender, RadioButtonList)
 If RadioButton1 IsNot Nothing Then
 Dim datalistrow As DataList = TryCast(RadioButton1.NamingContainer, DataList)
 Dim TxtOther As TextBox = TryCast(datalistrow.FindControl("TxtOther"), TextBox)

 If RadioButton1.SelectedValue = "Other" Then

 TxtOther.Visible = True
 Else
 TxtOther.Visible = False
 End If
 End If

End Sub


Protected Sub TextBox1_OnTextChanged(sender As Object, e As EventArgs)
 If TextBox1.Text IsNot Nothing Then
 RadioButton1.Items.Add(TextBox1.Text)
 End If
End Sub


попробуй это..

Protected Sub TextBox1_OnTextChanged(sender As Object, e As EventArgs)
 Dim TextBox1 As TextBox = TryCast(sender, TextBox)
 If TextBox1 IsNot Nothing Then
 Dim RadioButton1 As RadioButtonList = TryCast(TextBox1.Parent.FindControl("RadioButton1"), RadioButtonList)
 If TextBox1.Text IsNot Nothing Then
 RadioButton1.Items.Add(TextBox1.Text)
 End If
 End If

End Sub

licensed under cc by-sa 3.0 with attribution.