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

时间:2012-01-25 21:36:47

标签: c# asp.net

这是我的网格

  <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”&gt;方法

     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方法)中添加一个条件(基于在页面加载中插入的测试值),以便在页面加载时只隐藏一次?

感谢弗兰克!

1 个答案:

答案 0 :(得分:0)

我相信你可以从“DataBoundItem”类型的行中获取PsaDataSet.PsaLinkRow并使用您获得ProductId,Series等,并执行您需要的条件。此外,如果条件在if条件内且条件相同,则两者都有相同的条件。你只需要一个。