隐藏具有条件的asp.net GridView行

本文关键字:net GridView asp 有条件 隐藏 | 更新日期: 2023-09-27 18:21:21

这是我的网格

  <asp:GridView ID="gridProduct"  runat="server" 
    AutoGenerateColumns="false"  
    ShowFooter="true" 
    onrowcancelingedit="gridProduct_RowCancelingEdit" 
    onrowdeleting="gridProduct_RowDeleting" onrowediting="gridProduct_RowEditing" 
    onrowupdating="gridProduct_RowUpdating" 
    onrowcommand="gridProduct_RowCommand"
    onrowdatabound="gridProduct_RowDataBound">
        <Columns>
            <asp:TemplateField>
            <EditItemTemplate>
                <asp:Button ID="buttonUpdate" CommandName="Update" runat="server" ToolTip="Update" Text="Update" />
                <asp:Button ID="buttonCancel" CommandName="Cancel" runat="server" ToolTip="Cancel" Text="Cancel" />
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Button ID="buttonEdit" CommandName="Edit" runat="server" Text="Edit" ToolTip="Edit"/>
                <asp:Button ID="buttonDelete" CommandName="Delete" runat="server" Text="Delete" ToolTip="Delete"/>
            </ItemTemplate>
            <FooterTemplate>
                <asp:Button ID="buttonAdd" runat="server" Text="Ajouter" CommandName="AddNew" ToolTip="Add new User" ValidationGroup="validaiton" />
            </FooterTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="#Piece">
            <EditItemTemplate>
            <asp:Label ID="labelEditPiece" runat="server" Text='<%#Eval("Piece") %>'/>
            </EditItemTemplate>
            <ItemTemplate>
            <asp:Label ID="labelItemPiece" runat="server" Text='<%#Eval("Piece") %>'/>
            </ItemTemplate>
            <FooterTemplate>
            <asp:DropDownList ID="dropDownListPartsFooter" runat="server" DataTextField="Nom" DataValueField="ID_AchatTemplate">
            </asp:DropDownList>   
             ControlToValidate="txtBoxPiece" Text="*" ValidationGroup="validaiton"/>--%>
            </FooterTemplate> 
             </asp:TemplateField>
            <asp:TemplateField HeaderText="Series">
            <EditItemTemplate>
            <asp:Label ID="labelEditSeries" runat="server" Text='<%#Eval("Series") %>'/>
            </EditItemTemplate>
            <ItemTemplate>
            <asp:Label ID="labelItemSeries" runat="server" Text='<%#Eval("Series") %>'/>
            </ItemTemplate>
            <FooterTemplate>
            <asp:TextBox ID="txtBoxSeries" runat="server"/>
            <asp:RequiredFieldValidator ID="fieldValidSeries" runat="server" ControlToValidate="txtBoxSeries" Text="*" ValidationGroup="validaiton"/>
            </FooterTemplate> 
              .... </asp:TemplateField> 
           </Columns> 

这是我的页面加载

        protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        PsaDataSet psaList = new PsaDataSet();
        ViewState.Remove("psaList");
        ViewState.Add("psaList", psaList);
        ViewState.Add("psaUid", Guid.NewGuid());
        if (psaList.PsaLink.DefaultView.Count == 0)
             {
                // Patch for view  footer row when no data
                PsaDataSet.PsaLinkDataTable tmpList = new           PsaDataSet.PsaLinkDataTable();
                PsaDataSet.PsaLinkRow tmpItem = tmpList.NewPsaLinkRow();
                tmpItem.PsaUid = (Guid)ViewState["psaUid"];
                tmpItem.PsaProductUid = Guid.Empty;
                tmpItem.ProductId = 1;
                tmpItem.Series = "test";
                tmpItem.Rev = "test";
                tmpItem.Firmware = "test";
                tmpList.AddPsaLinkRow(tmpItem);
                tmpList.AcceptChanges();
                ViewState.Add("series", tmpItem.Series);

                gridProduct.DataSource = tmpList;
                gridProduct.DataBind();

            }
    }
    else
    {
        //BindGrid((PsaDataSet)ViewState["psaList"], false);
    }
}
private void BindGrid(PsaDataSet psaList, bool mustDataBind)
{
    gridProduct.DataSource = psaList.PsaLink;

    //if (mustDataBind)
    //{
        gridProduct.DataBind();
    //}
} 

这是我的onrowdatabound="gridProduct_RowDataBound">方法

     protected void gridProduct_RowDataBound(object sender, GridViewRowEventArgs e)
    {
         if (e.Row.RowType == DataControlRowType.DataRow)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Attributes["style"] = "display:none";
            }
        }
 }

我想在if(protected void gridProduct_RowDataBound方法)中添加一个条件(基于在页面加载中插入的测试值),以便在页面加载时只隐藏一次??

谢谢弗兰克!

隐藏具有条件的asp.net GridView行

我相信您可以从类型为"PsaDataSet.PsaLinkRow"的行中获取DataBoundItem,并使用它来获取ProductId、Series等,并执行您需要的条件。此外,在if条件中有和if条件,两者的条件相同。你只需要一个。