-1

我试图根据我的会话变量的当前状态隐藏我的表单视图的单行。

目前我正在尝试将行包含在更新面板中,然后简单地将 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>

我想达到什么目的。

当前表单视图:

在此处输入图像描述

将面板可见性设置为 false 应该会产生以下输出:

在此处输入图像描述

4

1 回答 1

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"];
        }
    }

于 2013-04-05T17:19:50.417 回答