2013-02-01 51 views
0

我有GridViewDropDownList如何將文本框的值分配爲下拉值的一部分?

<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的值併成功插入到數據庫中。

但是,我們試圖找出如何插入txtOtherTextBox的值並將其作爲DropDownList的一部分插入。希望這最後一句話是有道理的。

我已經試過folling:

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") 

但同樣的問題。

回答

0

這是我想嘗試的東西。

  1. 用戶輸入文本txtOther並提交頁面
  2. 採取什麼樣的用戶提交併存儲到ViewState的變量(某些陣列可能是最適合這種情況下,需要更多的值)
  3. 修改您的txtEmployer並添加OnLoad的事件處理程序
  4. 在OnLoad的事件處理程序中,您只需爲下拉列表添加另一個選項。

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

另一種選擇是存儲所有值在一些背景源(數據庫或什麼都)的所有選項,並以編程數據綁定值的下拉列表。

這是C#,但你看到的重點。

相關問題