0

保留中、承認済み、拒否済みの 3 つのチェックボックスがあります。チェックボックスを使用してグリッドビューをフィルタリングしています。

フィルタリングのための私のコードは次のとおりです。

    string sqlfilter = "id >= 1";
    DataView dv = new DataView(ClassBiller.FilterPendingConsumer());

    if (Pend.Checked)
    {
        sqlfilter += " AND (Status = 'Pending')";
    }

    if (Approve.Checked)
    {
        sqlfilter += " OR (Status = 'Approved')";
    }

    if (Reject.Checked)
    {
        sqlfilter += " OR (Status = 'Rejected')";
    }

    dv.RowFilter = sqlfilter;

    gvtransaction.DataSource = dv;
    gvtransaction.DataBind();

私の問題は、承認済みおよび拒否済みのフィルターが機能していないことです。サンプル: チェックするとき

(最初の 2 つのシーンでは正常に動作します): (1) 保留中 : グリッドビューは保留ステータスのアカウントを表示し、保留ステータスがない場合はアカウントを表示しません。(2) 保留中および承認済み: 承認済みおよび保留中を確認すると、承認済みおよび保留中のステータスのアカウントが表示されます。

(問題) (3) 承認または却下 : 承認または却下されたアカウントが表示されるはずですが、すべてのアカウントが表示されます。

助けてください...

4

1 に答える 1

1

これを試して

string sqlfilter = "id >= 1";
        DataView dv = new DataView(ClassBiller.FilterPendingConsumer());

        if (Pend.Checked)
        {
            sqlfilter += " AND (Status = 'Pending')";
        }

        if (Approve.Checked)
        {
            sqlfilter += (sqlfilter.Contains("AND") ? "OR" : "AND") + " (Status = 'Approved')";
        }

        if (Reject.Checked)
        {
            sqlfilter += (sqlfilter.Contains("AND") ? "OR" : "AND") + " (Status = 'Rejected')";
        }

        dv.RowFilter = sqlfilter;

        gvtransaction.DataSource = dv;
        gvtransaction.DataBind();
于 2013-06-05T07:19:12.490 に答える