2010-11-03 1 views
1

Я использую детальное представление, чтобы показать запись из базы данных для редактирования - или для вставки новой записи. Когда флажок в одном из полей изменяется пользователем, я хочу скрыть другое поле. Чтобы избежать ненужных обратных передач, я хочу использовать javascript. Вот упрощенная версия того, что я до сих пор:Скрыть поле Detailsview с javascript

<script type="text/javascript"> 
    function HideShowPromo(chk) { 
     if (chk.checked == true) 
      //.style.display = 'block'; 
     else 
      //.style.display = 'none'; 
    } 
</script> 

<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="false"> 
    <Fields> 
     <asp:TemplateField HeaderText="Use Promotional Code:"> 
      <InsertItemTemplate> 
       <asp:CheckBox ID="cbUsePromo" runat="server" /> 
      </InsertItemTemplate> 
      <EditItemTemplate> 
       <asp:CheckBox ID="cbUsePromo" runat="server" Checked='<%# Bind("_usePromo") %>' /> 
      </EditItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Promotional Code:"> 
      <InsertItemTemplate> 
       <asp:TextBox ID="txtPromoCode" runat="server" MaxLength="10"></asp:TextBox> 
      </InsertItemTemplate> 
      <EditItemTemplate> 
       <asp:TextBox ID="txtPromoCode" runat="server" Text='<%# Bind("_promo") %>' MaxLength="10"></asp:TextBox> 
      </EditItemTemplate> 
     </asp:TemplateField> 
    </Fields> 
</asp:DetailsView>  

и код позади:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     DetailsView1.DefaultMode = DetailsViewMode.Insert;    
     ((CheckBox)DetailsView1.FindControl("cbUsePromo")).Attributes.Add("onclick", "HideShowPromo(this)"); 
    } 
} 

Я был в состоянии выбрать «txtPromoCode» текстовое поле и скрыть его, но он оставляет HeaderText. Я хочу скрыть все поле.

ответ

1

Вы должны стараться, чтобы скрыть всю строку, так что, если сгенерированный HTML, как:

<tr> 
    <td>Header</td> 
    <td><input id='txtPromoCode' /></td> 
</tr> 

Выберите txtPromoCode с яваскрипт и скрыть txtPromoCode.parentNode.parentNode (первый родитель <td>, второй один <tr>)

+0

Это сработало отлично! – JumpingJezza