Скрыть строку gridView в asp.net - PullRequest
       46

Скрыть строку gridView в asp.net

2 голосов
/ 22 сентября 2008

Я создаю gridView, который позволяет добавлять новые строки, добавляя элементы управления, необходимые для вставки в FooterTemplate, но когда у ObjectDataSource нет записей, я добавляю фиктивную строку, так как FooterTemplate отображается только при наличии данных.

Как я могу скрыть этот фиктивный ряд? Я попытался установить e.row.visible = false на RowDataBound, но строка все еще видна.

Ответы [ 13 ]

4 голосов
/ 06 ноября 2011

Пожалуйста, попробуйте следующее

    protected void GridView1_DataBound(object sender, EventArgs e)
    {
        GridView1.Rows[0].Visible = false;
    }
3 голосов
/ 22 сентября 2008

Вы можете обработать событие привязки к данным gridview и скрыть пустую строку. (Не забудьте назначить свойство события в коде aspx):

protected void GridView1_DataBound(object sender, EventArgs e)
    {
        if (GridView1.Rows.Count == 1)
            GridView1.Rows[0].Visible = false;
    }
1 голос
/ 22 сентября 2008

Я думаю, это то, что вам нужно:

<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>

и код:

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

Но я не понимаю, почему вы добавляете «элементы управления вставкой» в нижний колонтитул, а не помещаете их под сетку.

0 голосов
/ 05 октября 2015

Если вы не хотите отображать данные, когда столбец / строка пустые:

if (!String.IsNullOrEmpty(item.DataName))
{
    e.Row.Visible = false;
}
0 голосов
/ 23 марта 2012

Это легко сделать с помощью SQL

USE YourdatabaseName select * from TableName where Column_Name <> ''
0 голосов
/ 28 июля 2010

Вы должны использовать DataKeyNames в вашем GridView:

<asp:GridView ID="GridView1" runat="server" DataKeyNames="FooID">

А затем получите его в своем коде: GridView1.DataKeys[0].Value.ToString()

Где «0» - это номер строки, которую вы хотите получить «FooID»

0 голосов
/ 29 сентября 2009

Почему вы не используете EmptyDataTemplate? Кажется, он отлично работает, хотя я использую его всего пару дней ...

0 голосов
/ 27 февраля 2009

Чтобы сделать его видимым, просто используйте:

Gridview.Rows.Item(i).Attributes.Add("style", "display:block")

И сделать его невидимым

Gridview.Rows.Item(i).Attributes.Add("style", "display:none")
0 голосов
/ 22 сентября 2008

Я делал это на предыдущей работе, но так как вы можете добавлять строки, я всегда отображал их в строке нижнего колонтитула. Чтобы отобразить сетку, я связал пустую строку того типа, который обычно связан

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

тогда у него есть все столбцы, а затем вам нужно. Вы можете получить доступ к нижнему колонтитулу, потянув это:

'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)

затем, чтобы получить доступ к любому из элементов управления в нижнем колонтитуле, вы должны выполнить:

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

Я предполагаю, что вы сможете сделать:

footer.Visible = false

чтобы сделать строку нижнего колонтитула невидимой.

Надеюсь, это поможет!

Редактировать Я только что понял, что вы сказали. Я в основном удаляю строку, когда добавляю новую, но для этого нужно проверить, есть ли другие строки, и, если есть, проверить, есть ли в ней значения.

Чтобы удалить фиктивную строку, сделайте что-то вроде этого:

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 голосов
/ 22 сентября 2008

GridView имеет специальное свойство для доступа к строке нижнего колонтитула с именем «FooterRow»

Затем вы можете попробовать yourGrid.FooterRow.Visible = false;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...