2010-11-03 58 views
1

我正在使用detailsview來顯示數據庫中的記錄進行編輯 - 或插入新記錄。當用戶更改其中一個字段的複選框時,我想隱藏另一個字段。爲了避免不必要的回傳,我想使用JavaScript。這裏是我到目前爲止的簡化版本:和隱藏詳細信息視圖字段與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」文本框和隱藏它,但它留下的標題文本。我想隱藏整個領域。

回答

1

你應該儘量隱藏整行,所以如果生成的HTML像:

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

使用javascript選擇txtPromoCode和隱藏txtPromoCode.parentNode.parentNode(第一個父是<td>,第二個是<tr>

+0

完美的工作! – JumpingJezza 2010-11-03 09:09:46

相關問題