2013-04-05 68 views
-1

我試圖隱藏我的表單視圖的單行基於我的會話變量的當前狀態。如何隱藏單個formview行

目前我正試圖在更新面板中包裝行,然後簡單地將Visible屬性設置爲true或false。

這目前沒有工作。

下面是代碼:

<asp:FormView ID="FormView1" runat="server" Height="51px" Width="387px"> 
     <EditItemTemplate> 
      coffeeName: 
      <asp:TextBox ID="coffeeNameTextBox" runat="server" 
       Text='<%# Bind("coffeeName") %>' /> 
      <br /> 
      coffeeOrigin: 
      <asp:TextBox ID="coffeeOriginTextBox" runat="server" 
       Text='<%# Bind("coffeeOrigin") %>' /> 
      <br /> 
      coffeeStrength: 
      <asp:TextBox ID="coffeeStrengthTextBox" runat="server" 
       Text='<%# Bind("coffeeStrength") %>' /> 
      <br /> 
      coffeePrice: 
      <asp:TextBox ID="coffeePriceTextBox" runat="server" 
       Text='<%# Bind("coffeePrice") %>' /> 
      <br /> 
      coffeeGrind: 
      <asp:TextBox ID="coffeeGrindTextBox" runat="server" 
       Text='<%# Bind("coffeeGrind") %>' /> 
      <br /> 
      coffeeQty: 
      <asp:TextBox ID="coffeeQtyTextBox" runat="server" 
       Text='<%# Bind("coffeeQty") %>' /> 
      <br /> 
      coffeeRRP: 
      <asp:TextBox ID="coffeeRRPTextBox" runat="server" 
       Text='<%# Bind("coffeeRRP") %>' /> 
      <br /> 
      <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" 
       CommandName="Update" Text="Update" /> 
      &nbsp;<asp:LinkButton ID="UpdateCancelButton" runat="server" 
       CausesValidation="False" CommandName="Cancel" Text="Cancel" /> 
     </EditItemTemplate> 



     <ItemTemplate> 

      <b>Origin:</b> 
      <asp:Label ID="coffeeOriginLabel" runat="server" 
       Text='<%# Bind("coffeeOrigin") %>' /> 
      <br /> 
         <br /> 
      <b>Grind:</b> 
      <asp:Label ID="coffeeGrindLabel" runat="server" 
       Text='<%# Bind("coffeeGrind") %>' /> 
      <br /> 
         <br /> 
      <b>Strength:</b> 
      <asp:Label ID="coffeeStrengthLabel" runat="server" 
       Text='<%# Bind("coffeeStrength") %>' /> 
      <br /> 
         <br /> 
      <b>Price: £</b> 
      <asp:Label ID="coffeePriceLabel" runat="server" 
       Text='<%# Bind("coffeePrice") %>' /> 
      <br /> 
     <br /> 

      ********** Panel used to enclose the stock level********** 

      <asp:Panel ID="panelLevel" runat="server"> 
      <b>Stock Level:</b> 

      <asp:Label ID="coffeeQtyLabel" runat="server" Text='<%# Bind("coffeeQty") %>' /> 
      <br /> 
         <br /> 
            <br /> 
     </asp:Panel> 

     </ItemTemplate> 

    </asp:FormView> 

什麼即時試圖實現。

當前FormView控件:

enter image description here

面板可視性設置爲false應該產生以下輸出:

enter image description here

回答

0

你能否提供一些更多的代碼?更新面板在哪裏?你如何設置行可視性?

試試這個,爲我工作:

代碼CS:

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      BindFormView(); 
     } 
    } 

    private void BindFormView() 
    { 
     DataTable dt = new DataTable(); 
     dt.Columns.Add("coffeeName", typeof(string)); 
     dt.Columns.Add("coffeeOrigin", typeof(string)); 
     dt.Columns.Add("coffeeStrength", typeof(int)); 
     dt.Columns.Add("coffeePrice", typeof(double)); 
     dt.Columns.Add("coffeeGrind", typeof(string)); 
     dt.Columns.Add("coffeeQty", typeof(int)); 
     dt.Columns.Add("coffeeRRP", typeof(int)); 

     DataRow dr = dt.NewRow(); 
     dr["coffeeName"] = "Kenya"; 
     dr["coffeeOrigin"] = "Smooth"; 
     dr["coffeeStrength"] = 6; 
     dr["coffeePrice"] = 2.99; 
     dr["coffeeGrind"] = "Kenya"; 
     dr["coffeeQty"] = 6; 

     dt.Rows.Add(dr); 

     FormView1.DataSource = dt; 
     FormView1.DataBind(); 
    } 

    protected void btnHideRow_Click(object sender, EventArgs e) 
    { 
     Session["HideRow"] = Session["HideRow"] == null ? false :          (bool)Session["HideRow"]; 
     BindFormView(); 
    } 

    protected void FormView1_DataBound(object sender, EventArgs e) 
    { 
     if (Session["HideRow"] != null) 
     { 
      var pnlToHide = FormView1.FindControl("panelLevel"); 
      pnlToHide.Visible = (bool)Session["HideRow"]; 
     } 
    }