1

いくつかの列を返すストアド プロシージャがProjectIDあります。値が null のグリッドビューを作成することにのみ関心があります。以下の私のコードは、すべての列のすべての行を返します。誰か見てくれませんか。ありがとう

DataRowCollection rowCollection = spDataTable.Rows;
DataTable dt = new DataTable();

foreach (DataColumn col in spDataTable.Columns)
{
                if (col.ColumnName == "ProjectID")
                {
                    dt.Columns.Add(col.ColumnName);
                    lb_Test.Items.Add(col.ColumnName);
                        foreach(DataRow ros in col.Table.Rows)
                        {
                            foreach (object oObj in ros.ItemArray)
                            {
                                if (oObj != null)
                                {
                                    if (col.ColumnName == "ProjectID")
                                    {
                                        lb_Test.Items.Add(oObj.ToString());
                                        dt.Rows.Add(oObj);
                                    }
                                }
                                else
                                {
                                    lb_Test.Items.Add("Null");
                                }
                            }   
                        }
                        grd_test.DataSource = dt;
                        grd_test.DataBind();
                }
                else
                {
                    lb_Test.Items.Add("Not valid Name");
                }
}
4

1 に答える 1

1

私が質問を理解している場合、必要なのはこれだけのようです...

DataRowCollection rowCollection = spDataTable.Rows; 
DataTable dt = new DataTable(); 

foreach(DataRow dr in spDataTable.Rows)
{
        object projectId = dr["ProjectID"];
        if (projectId == null)
        {
            dt.Rows.Add(dr);
        }
     }

これにより、rowCollection に、ProjectID 列の値が null であるすべての行が入力されます。

そうは言っても、可能であれば、必要な行のみを返すようにストアド プロシージャを変更することを検討してください。これにより、ネットワーク トラフィックが節約されます。

また、DataTable には組み込みのフィルタリング機能があります... http://msdn.microsoft.com/en-us/library/zk13kdh0(v=vs.71).aspx。たぶん、これはより良いアプローチになるでしょう。

DataView には、データをフィルター処理する機能もあります。次に、GridView を DataView にバインドできます... https://stackoverflow.com/questions/10893860/how-to-filter-gridview-from-textbox

.Net に組み込まれている DataTable をフィルター処理するには、いくつかの方法があります。自分で巻く必要はありません。

于 2012-10-10T18:40:17.040 に答える