jithesh a Ответов: 2

Как скрыть строку в зависимости от состояния в GridView в


filename     path         Status
    -----------------------------
    1.txt      D:\JI\1.txt     E
    a.txt      D:\JI\a.txt     D
    b.txt      D:\JI\b.txt     E






This is my datatable values.I want to bind this value to a gridview.Before that I want to remove / hide the the rows which having the status as 'D'.I used onRowdatabound event ,but its not working .please help

  dtTemSec = (DataTable)ViewState["SecDetails"];
 GridImport.DataSource = dtTemSec;
                GridImport.DataBind();

Kornfeld Eliyahu Peter

Примените фильтр к источнику данных...

2 Ответов

Рейтинг:
12

jithesh a

GridImport.DataSource = dtTemSec.AsEnumerable()
                                .Where(x => x.Field<string>("Status") != "D")
                                .CopyToDataTable();
GridImport.DataBind();


Рейтинг:
1

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

BoundField


Что-то вроде приведенного ниже будет работать, если вы использовали BoundField.
private void GridImport_RowDataBound(Object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if (e.Row.Cells[2].Text.Equals("D"))
            e.Row.Visible = false;
    }
}

Шаблон


Если значение находится внутри TemplateField, то вам нужно найти этот элемент управления, а затем попытаться сравнить текст, как... Предположим, что существует TextBox внутри TemplateField, где закреплено значение.
private void GridImport_RowDataBound(Object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        TextBox txtStatus = (TextBox)rw.FindControl("txStatus");
        
        if (txtStatus.Text.Equals("D"))
            e.Row.Visible = false;
}