C# 从存储过程构建定义特定列和行的网格
我有一个返回几列的存储过程,我只对使用C# 从存储过程构建定义特定列和行的网格,c#,asp.net,C#,Asp.net,我有一个返回几列的存储过程,我只对使用ProjectID值为null的gridview感兴趣。下面我的代码返回所有列的所有行,它应该只返回column=projectID的位置。有人能看一下吗。谢谢 DataRowCollection rowCollection = spDataTable.Rows; DataTable dt = new DataTable(); foreach (DataColumn col in spDataTable.Columns) {
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");
}
}
如果我理解这个问题,你需要的似乎就是这个
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还具有内置的筛选功能。。。。也许这是一个更好的方法 DataView还具有过滤数据的功能。然后可以将GridView绑定到DataView。。。有几种方法可以过滤内置在.Net中的数据表。没有必要自己动手。如果我理解这个问题,你需要的似乎就是这个
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还具有内置的筛选功能。。。。也许这是一个更好的方法 DataView还具有过滤数据的功能。然后可以将GridView绑定到DataView。。。有几种方法可以过滤内置在.Net中的数据表。无需自行滚动。每一行都包含一个名为“projectd”@jpavlov的列,从您的数据层而非UI层筛选空与非空的行。每一行都包含一个名为“projectd”@jpavlov的列,从您的数据层而非UI层筛选空与非空的行。我无法添加到rowCollection,具有this@jpavlov对不起…我想应该是“dt.Rows.Add(dr)”。话虽如此,请考虑其他选择。最好使用内置的过滤功能,而不是自己滚动。更灵活。我无法添加到rowCollection,但this@jpavlov对不起…我想应该是“dt.Rows.Add(dr)”。话虽如此,请考虑其他选择。最好使用内置的过滤功能,而不是自己滚动。更加灵活。