构建一个网格,用于定义存储过程中的特定列和行

时间:2012-10-10 18:18:11

标签: c# asp.net

我有一个返回几列的存储过程,我只对构建一个带有ProjectID值为null的gridview感兴趣。我的代码返回所有列的所有行,它应该返回column = projectID。有人可以看看它。感谢

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");
                }
}

1 个答案:

答案 0 :(得分: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);
        }
     }

这将使用ProjectID列中的值为null的所有行填充rowCollection。

话虽如此,如果可以,您可以考虑更改存储过程以仅返回所需的行。这样可以节省网络流量。

此外,DataTable具有内置过滤功能...... http://msdn.microsoft.com/en-us/library/zk13kdh0(v=vs.71).aspx。也许这是一种更好的方法。

DataViews还具有过滤数据的功能。然后你可以将GridView绑定到DataView ... https://stackoverflow.com/questions/10893860/how-to-filter-gridview-from-textbox

有几种方法可以过滤内置于.Net的DataTable。没有必要自己动手。