2015-01-12 4 views
0

Я пытаюсь показать текстовое поле после выбора элемента из заполненного списка и нажатия кнопки. После того, как я нажму кнопку, текстовое поле должно появиться на экране с нужным текстом, однако он никогда не появляется. Начальное значение свойства visible установлено в false, а затем в Code Behind оно устанавливает значение true и заполняет текст в текстовом поле. Я отлаживал код, и свойства для видимых и текстовых файлов, безусловно, обновляются, но я не знаю, в чем проблема.Текстовое поле, не отображающееся на странице

ASP.net

<asp:FormView ID="FormSectionFormView" runat="server" DataKeyNames="FormSectionID" DataSourceID="FormSectionDataSource" RowStyle-VerticalAlign="NotSet"> 
<ItemTemplate> 
    <tr> 
     <td> 
      <asp:Button ID="InsertButton" 
      runat="server" 
      Text="Insert" 
      OnClick="FormSectionButton_Click" 
      Font-Size="1.2em" /> 
      <asp:Button ID="UpdateButton" 
      runat="server" 
      Text="Update" 
      Font-Size="1.2em"/>    
     </td> 
     <td align="center"> 
      <div style: align="center"> 
       <asp:Label ID="Label1" 
       runat="server" 
       Font-Bold="true" 
       Text="Section Instruction" 
       Font-Size="1.2em"> 
        </asp:Label> 
      </div> 
      <div style="width:800px; height:auto; overflow:auto"> 
       <asp:ListBox ID="SectionInstructionListBox" 
       DataSourceID="SectionInstructionSource" 
       runat="server" 
       DataTextField="Instruction" 
       Visible="True" /> 
      </div> 
     </td> 
    </tr> 
    <tr> 
     <td> 
     </td> 
     <td> 
      <div style="padding-top: 4em; width:800px"> 
       <asp:Label ID="Label5" 
       runat="server" 
       Font-Bold="true" 
       Text="Insert New Instruction" 
       Font-Size="1.2em"> 
       </asp:Label>    
       <asp:TextBox ID="SectionInstructionTextBox" 
       runat="server" 
       Width="800px" /> 
      </div> 
     </td>  
    </tr> 
    <tr> 
     <td> 

     </td> 
     <td> 
      <asp:TextBox runat="server" ID="updatetextbox" AutoPostBack="True" Visible="False"></asp:TextBox> 
     </td> 
    </tr> 
</ItemTemplate> 
</asp:FormView> 

Код За

protected void FormSectionUpdateButton_Click(object sender, EventArgs e) 
{ 
    var ctrl = (Control)sender; 
    var updatetextbox = (TextBox)ctrl.FindControl("updatetextbox"); 
    var instructionlistbox = (ListBox)ctrl.FindControl("SectionInstructionListBox"); 
    updatetextbox.Visible = true; 
    updatetextbox.Text = instructionlistbox.SelectedItem.Text; 
    FormSectionListView.DataBind(); 
} 

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

protected void Page_Load(object sender, EventArgs e) 
{ 
    _connection = DataAccess.SelfRef().GetConnection(); 

    var list = InstructionDropDown.SelectedValue; 
    switch (list) 
    { 

     case "Form Section": 
      FormSectionListBox.DataSourceID = "FormSectionDataSource"; 
      FormSectionListView.DataBind(); 
      RenderView(FormSectionListView, "hidden"); // hide listview on page load 
      break; 

    } 

} 
+1

Существует нет текстового поля с ID UpdateTextBox ваш ASPX не не releavant в код позади ... – mybirthname

+1

я не вижу, управление TextBox с идентификатором = «updatetextbox» .. я просто не видел его? –

+0

Нигде в вашем интерфейсном коде у вас есть элемент управления TextBox, который имеет видимость, равную false, или имеет правильный идентификатор. –

ответ

2

Вы хотите, чтобы убедиться, что вы не отформатируете FormView на обратной стороне. Каждый раз, когда вы связываете FormView, он сбрасывает все в исходное состояние. Проверьте, если это сообщение назад.

protected void Page_Load(object sender, EventArgs e) 
{ 
    _connection = DataAccess.SelfRef().GetConnection(); 

    if (!Page.IsPostBack) 
    { 

     var list = InstructionDropDown.SelectedValue; 
     switch (list) 
     { 

     case "Form Section": 
      FormSectionListBox.DataSourceID = "FormSectionDataSource"; 
      FormSectionListView.DataBind(); 
      RenderView(FormSectionListView, "hidden"); // hide listview on page load 
      break; 

     } 
    } 

} 
+0

Спасибо, что была проблема. – user3339242

+0

Добро пожаловать! –

+0

Когда я проверяю, является ли страница PostBack, она, кажется, мешает другим элементам моей страницы, потому что, прежде чем я манипулирую текстовым полем, я использую dropdownList, который должен автоматически показывать информацию о загрузке страницы. Однако это больше не делает этого. – user3339242

Смежные вопросы