0

我有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和 insert 作为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未声明且可能无法访问的错误。

drpEmpl是 的名称DropDownList

我努力了:

drpEmpl = gridview1.FindControl("txtOther")

但同样的问题。

4

1 回答 1

0

这是我会尝试的。

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

    foreach (string s in ArrayOfPreviouslyAddedValues){
    
        ddl.Items.Add(new ListItem(s, s));
    }
    

另一种选择是将所有选项的所有值存储在某个后台源(数据库或其他任何东西)中,并以编程方式将值数据绑定到您的下拉列表。

这是 C#,但您明白这一点。

于 2013-02-01T19:47:21.963 回答