0

顧客の支払いデータを表示するためのGridviewがあります。デフォルトでは、RowDataBoundイベントでのみ簡単に利用できるいくつかのチェックを使用して、期限を過ぎた顧客を含む行の表示を変更します。入力に基づいて、期限が過ぎている行または期限が過ぎていない行のみを表示するようにデータをフィルターで除外するオプションを追加したいと思います。これを行うための最良の方法は何ですか?

私は次のようなことを考えています:

protected void gvTenantList_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (null != e.Row.DataItem)
    {
        DataRowView rowView = (DataRowView)e.Row.DataItem;
        if (hsPastDueLeases.Contains((int)rowView["LeaseID"]))
        {
            e.Row.CssClass += " pinkbg";
            if (showCurrentOnly) //code to prevent showing this row
        }
        else if (showPastDueOnly) //code to prevent showing this row
    }
}

基本的に、私は何がに属するかを知る必要があります//code to prevent showing this row

4

1 に答える 1

1

バインドを行う前にフィルタリングを行ってみませんか?

例えば

gvTenantList.DataSource = data.Where(a=> !hsPastDueLeases.Contains(a.LeaseID)); // Of course you have a datatable so this is not 100% as easy as this

または、を使用して行を非表示に設定できます

e.Row.Visible = false;


protected void gvTenantList_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (null != e.Row.DataItem)
    {
        DataRowView rowView = (DataRowView)e.Row.DataItem;
        if (hsPastDueLeases.Contains((int)rowView["LeaseID"]))
        {
            e.Row.CssClass += " pinkbg";
            e.Row.Visible = !showCurrentOnly;
        }
        else if (showPastDueOnly){ //code to prevent showing this row
            e.Row.Visible = false;
        }
    }
}

または、「hidden」というCssClassを追加して、cssに

.hidden { display: none; }

しかし、ほとんどの場合、本当に必要なものだけをデータバインドし、このようなビジネスロジックをバインドイベントから除外する必要があると思います。

于 2011-12-01T23:22:45.287 に答える