【问题标题】:Is it possible to have textbox as part of radio button values?是否可以将文本框作为单选按钮值的一部分?
【发布时间】:2014-04-03 02:10:39
【问题描述】:

第一个计时器。请不要打我。

我有一个荒谬的要求。

我们有一组从 sql server 数据库动态生成的单选按钮。

例如,有一个 Questions 表,其中一列是 ChoiceType。

ChoiceType 有 3 个值,S 表示单选(单选按钮); M 代表多项选择(复选框);和 T 用于文本框。

这里是标记:

然后代码隐藏 sn-p

<tr>
 <td>
  <asp:RadioButtonList ID="RadioButtonList1" runat="server"></asp:RadioButtonList>
  <asp:CheckBoxList ID="CheckBoxList1" runat="server"></asp:CheckBoxList>
  <asp:TextBox ID="TextBox1" runat="server" Columns="30" Font-Bold="False" Rows="5"
                                            TextMode="MultiLine"></asp:TextBox>
 </td>
</tr>

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

我的问题:是否可以将文本框 (T) 显示为 RadiobuttonList 选项的一部分,这样用户所需要做的就是选中带有文本框值的单选按钮的框,然后在文本框中输入一些文本?

下面是一个截图,希望能说明我的观点。

抱歉,现在可以发布图片。

感谢您的耐心等待。

【问题讨论】:

    标签: javascript jquery asp.net vb.net


    【解决方案1】:

    这就是你需要的。

    我假设你正在使用 datalist

    <ItemTemplate>
    <table>
      <tr>
     <td>
      <asp:RadioButtonList ID="RadioButtonList1" runat="server"></asp:RadioButtonList>
      <asp:CheckBoxList ID="CheckBoxList1" runat="server"></asp:CheckBoxList>
      <asp:TextBox ID="TextBox1" runat="server" Columns="30" Font-Bold="False" Rows="5"
                                                TextMode="MultiLine"></asp:TextBox>
     </td>
      <td>
      <asp:TextBox ID="TextBoxOptional" runat="server" Visible="false" Columns="30" Font-Bold="False" Rows="5" TextMode="MultiLine"></asp:TextBox>
      </td>
    </tr>
    </table>
    </ItemTemplate>
    

    现在在项目数据绑定中,以防 M

     Case "M"
                    rbl.Visible = False
                    cbl.Visible = True
                    txt.Visible = False
                    cbl.DataSource = ds
                    cbl.DataTextField = "Choice"
                    cbl.DataValueField = "ChoiceID"
                    cbl.DataBind()
        TextBoxOptional.Visible = true// assuming that you will find control on above lines.
    

    【讨论】:

    • 先生,您能给我举一些例子来说明如何按照您的建议进行操作吗?回想一下,我说过这些是从数据库中动态生成的
    • 先生,我知道如何创建用户控制。我只是不确定这一切如何适合我正在尝试做的事情。对不起,我的吸收缓慢。
    • 我想将它与我发布的 itemDataBound 子集成。你听起来就像你确切地知道需要做什么。先生,我真的很感激一个例子。非常感谢。
    • Tairoc,你能把你的问题说清楚你到底想做什么..
    • @Kapil,假设我们有 5 个单选按钮值,一个称为 Through Advertisement;另一个叫Referred by Friend;另一个叫做Search Engine。最后一个称为Other。这个名为Other 的应该有一个文本框。换句话说,Other 以及 Textbox 为 other 输入值。 Umarkashmiri,对不起先生,我错误地遗漏了这一点。另外,我把你的文本框放在 S 中,因为 S 代表单选按钮。
    【解决方案2】:

    如果单选按钮的选定文本为“Other”,则在单选按钮 OnCheckedChanged 事件上放置一个可见 false 的文本框,然后使文本框可见为真。

    试试这个...

    Protected Sub RadioButton1_OnCheckedChanged(sender As Object, e As EventArgs)
        Dim RadioButton1 As RadioButton = TryCast(sender, RadioButton)
        Dim datalistrow As DataList = TryCast(RadioButton1.NamingContainer, DataList)
        Dim TxtOther As TextBox = TryCast(datalistrow.FindControl("TxtOther"), TextBox)
        TxtOther.Visible = True
    End Sub 
    
    
    
    
    <tr>
         <td>
          <asp:RadioButtonList ID="RadioButtonList1" runat="server"></asp:RadioButtonList>
          <asp:CheckBoxList ID="CheckBoxList1" runat="server"></asp:CheckBoxList>
          <asp:TextBox ID="TextBox1" runat="server" Columns="30" Font-Bold="False" Rows="5"
                                                    TextMode="MultiLine"></asp:TextBox>
         </td>
      <td>
     <asp:TextBox ID="TxtOther" runat="server" Visible="False" Columns="30" Font-Bold="False" Rows="5"
                                                    TextMode="MultiLine"></asp:TextBox>
      </td>
        </tr>
    
    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
    

    【讨论】:

    • 很棒的代码,但它在哪里检查单选按钮选择是否为Other
    • 如果单选按钮选择的选项是“其他”,则在加载数据列表时,您希望显示 TxtOther 文本框或在加载数据列表后将单选按钮更改为“其他”
    • 您将在哪里获得 Radiobutton 的选择值“Other”以在 RowDatabound 事件中进行比较
    • 您的解决方案没有解决问题,但没关系。我会分开问这个问题。感谢您的帮助。
    【解决方案3】:

    你可以这样检查..

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-28
      • 1970-01-01
      • 2015-10-20
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      相关资源
      最近更新 更多