Hide a gridView row in asp.net

后端 未结 13 769
说谎
说谎 2021-01-14 21:22

I am creating a gridView that allows adding new rows by adding the controls necessary for the insert into the FooterTemplate, but when the Ob

相关标签:
13条回答
  • 2021-01-14 22:12

    Please try the following

        protected void GridView1_DataBound(object sender, EventArgs e)
        {
            GridView1.Rows[0].Visible = false;
        }
    
    0 讨论(0)
  • 2021-01-14 22:15

    GridView has a special property to access Footer Row, named "FooterRow"

    Then, you cold try yourGrid.FooterRow.Visible = false;

    0 讨论(0)
  • 2021-01-14 22:17

    It can easily be done by SQL

    USE YourdatabaseName select * from TableName where Column_Name <> ''
    
    0 讨论(0)
  • 2021-01-14 22:20

    Maybe use CSS to set display none?!

    0 讨论(0)
  • 2021-01-14 22:22

    I did this on a previous job, but since you can add rows, I always had it visible in the footer row. To make it so that the grid shows up, I bound an empty row of the type that is normally bound

    dim row as Datarow = table.NewRow()
    table.AddRow(row)
    gridView.DataSource = table
    gridView.Databind()
    

    then it has all the columns and then you need. You can access the footer by pulling this:

    'this will get the footer no matter how many rows there are in the grid.
    
    Dim footer as Control = gridView.Controls(0).Controls(gridView.Controls(0).Controls.Count -1)
    

    then to access any of the controls in the footer you would go and do a:

    Dim cntl as Control = footer.FindControl(<Insert Control Name Here>)
    

    I'd assume you'd be able to do a:

    footer.Visible = false
    

    to make the footer row invisible.

    I hope this helps!

    Edit I just figured out what you said. I basically delete the row when I add a new one, but to do this you need to check to see if there are any other rows, and if there are, check to see if there are values in it.

    To delete the dummy row do something like this:

    If mTable.Rows.Count = 1 AndAlso mTable.Rows(0)(<first column to check for null value>) Is DBNull.Value AndAlso mTable.Rows(0)(<second column>) Is DBNull.Value AndAlso mTable.Rows(0)(<thrid column>) Is DBNull.Value Then  
    mTable.Rows.Remove(mTable.Rows(0))  
    End If
    mTable.Rows.Add(row)
    gridView.Datasource = mTable
    gridView.Databind()
    
    0 讨论(0)
  • 2021-01-14 22:25

    I think this is what you need:

    <asp:GridView ID="grid" runat="server" AutoGenerateColumns="false" ShowFooter="true" OnRowDataBound="OnRowDataBound">
        <Columns>
            <asp:TemplateField HeaderText="headertext">
                <ItemTemplate>
                    itemtext
                </ItemTemplate>
                <FooterTemplate>
                    insert controls
                </FooterTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
    

    and the codebehind:

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

    But I do not understand why you are adding your "insert controls" to the footer instead of placing them below the grid.

    0 讨论(0)
提交回复
热议问题