如何将文本框的值指定为下拉值的一部分?

时间:2013-02-01 19:07:48

标签: asp.net vb.net

我有GridView DropDownList

<asp:TemplateField HeaderText="Employer">
    <ItemTemplate>
        <asp:DropDownList ID="txtEmployer" runat="server" AutoPostBack="true"
            OnSelectedIndexChanged="SelectedIndexChanged">
            <asp:ListItem>Select</asp:ListItem>
            <asp:ListItem Value="AllScripts">AllScripts</asp:ListItem>
            <asp:ListItem Value="Contractor">Contractor</asp:ListItem>
            <asp:ListItem Value="Other">Other</asp:ListItem>
        </asp:DropDownList>
        <asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server"
            ControlToValidate="txtEmployer" ErrorMessage="*"
            InitialValue="Select"></asp:RequiredFieldValidator>
    </ItemTemplate>
</asp:TemplateField>

TextBox

<asp:TemplateField HeaderText="Other">
    <ItemTemplate>
        <asp:TextBox ID="txtOther" runat="server" TabIndex="435"></asp:TextBox>
        <asp:RequiredFieldValidator ID="RequiredFieldValidator7" runat="server"
            ControlToValidate="txtOther" ErrorMessage="*"
            SetFocusOnError="True"></asp:RequiredFieldValidator>
    </ItemTemplate>
</asp:TemplateField>

默认情况下,TexBox隐藏在PageLoad

当用户选择“其他”选项时,TextBox变为可见,允许用户输入他/她想要的任何值。到目前为止,这种方法很有效。

我们可以成功收集DropDownList的值并成功插入数据库。

但是,我们正在努力弄清楚如何插入txtOther TextBox的值并插入DropDownList的一部分。希望这最后一句是有道理的。

我尝试了以下内容:

Dim table As DataTable = TryCast(ViewState("CurrentTable"), DataTable)

If table IsNot Nothing Then
    For Each row As DataRow In table.Rows
        Dim txLName As String = TryCast(row.ItemArray(1), String)
        Dim txName As String = TryCast(row.ItemArray(2), String)
        Dim txEmail As String = TryCast(row.ItemArray(3), String)
        Dim txRole As String = TryCast(row.ItemArray(4), String)
        Dim txPhone As String = TryCast(row.ItemArray(5), String)
        Dim drpEmpl As String = TryCast(row.ItemArray(6), String)
        If drpEmpl = "Other" Then
            drpEmpl = txtOther.Text
        Else
            drpEmpl = TryCast(row.ItemArray(6), String)
        End If

我收到一条错误,txtOther.Text未声明,可能无法访问。

drpEmplDropDownList的名称。

我试过了:

drpEmpl = gridview1.FindControl("txtOther")

但同样的问题。

1 个答案:

答案 0 :(得分:0)

我会尝试这些。

  1. 用户将文本输入到txtOther并提交页面
  2. 获取用户提交者并将其存储到viewstate变量中(如果需要更多值,某些数组可能最适合)
  3. 修改您的txtEmployer并为OnLoad添加事件处理程序
  4. 在OnLoad的事件处理程序中,您只需为下拉列表添加另一个选项。

    foreach (string s in ArrayOfPreviouslyAddedValues){
    
        ddl.Items.Add(new ListItem(s, s));
    }
    
  5. 另一种选择是将所有选项的所有值存储在某些后台源(数据库或任何内容)中,并以编程方式将数据值存储到下拉列表中。

    这是C#,但你明白了这一点。