Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何读取所有行并填充GridView_C#_Asp.net_Gridview - Fatal编程技术网

C# 如何读取所有行并填充GridView

C# 如何读取所有行并填充GridView,c#,asp.net,gridview,C#,Asp.net,Gridview,我有以下c#代码: 如果仅使用第一行填充GridView(gvParentTasks)。如何使用while(reader.read())读取所有行并填充所有行的GridView?您应该使用SqlDataAdapter代替,填充数据集,然后填充GridView: using (SqlConnection connection = new SqlConnection(connString)) { //Get Parent Task SqlCommand command = new S

我有以下c#代码:


如果仅使用第一行填充GridView(
gvParentTasks
)。如何使用
while(reader.read())
读取所有行并填充所有行的GridView?

您应该使用
SqlDataAdapter
代替,填充
数据集,然后填充
GridView

using (SqlConnection connection = new SqlConnection(connString))
{
    //Get Parent Task
    SqlCommand command = new SqlCommand(queryStringParent, connection);
    connection.Open();

    DataSet ds = new DataSet();
    SqlDataAdapter da = new SqlDataAdapter(command);

    if (!string.IsNullOrEmpty(fkobjectid) && fkobjectid != " ")
    {
        da.Fill(ds);

        gvParentTasks.DataSource = ds.Tables[0];
        gvParentTasks.DataBind();
    }
}

您应该改用
SqlDataAdapter
,填充
数据集
,然后填充
GridView

using (SqlConnection connection = new SqlConnection(connString))
{
    //Get Parent Task
    SqlCommand command = new SqlCommand(queryStringParent, connection);
    connection.Open();

    DataSet ds = new DataSet();
    SqlDataAdapter da = new SqlDataAdapter(command);

    if (!string.IsNullOrEmpty(fkobjectid) && fkobjectid != " ")
    {
        da.Fill(ds);

        gvParentTasks.DataSource = ds.Tables[0];
        gvParentTasks.DataBind();
    }
}

你实际上是在让事情变得更难,然后你需要去做。您可以在前端创建页面。你所要做的就是:

<asp:SqlDataSource
    id="sdsOrderReview" runat="server"
    ConnectionString="<%$ ConnectionStrings:ECommerceDB %>"
    ProviderName="System.Data.SqlClient"
    SelectCommand="SELECT [OrderId], [AccountId], [Name]
        FROM [Order] ORDER BY [OrderId] DESC">

</asp:SqlDataSource>

这是一个简单的示例,那么对于网格视图,您需要做的就是:

<asp:GridView id="gvOrder" runat="server" DataSourceId=sdsOrderReview">

你实际上是在让事情变得更难,然后你需要去做。您可以在前端创建页面。你所要做的就是:

<asp:SqlDataSource
    id="sdsOrderReview" runat="server"
    ConnectionString="<%$ ConnectionStrings:ECommerceDB %>"
    ProviderName="System.Data.SqlClient"
    SelectCommand="SELECT [OrderId], [AccountId], [Name]
        FROM [Order] ORDER BY [OrderId] DESC">

</asp:SqlDataSource>

这是一个简单的示例,那么对于网格视图,您需要做的就是:

<asp:GridView id="gvOrder" runat="server" DataSourceId=sdsOrderReview">
只需从代码中删除
while(reader.read())
,您就可以看到
DataReader

SqlDataReader reader = command.ExecuteReader();
gvParentTasks.DataSource = reader;
gvParentTasks.DataBind();
只要从代码中删除
while(reader.read())
,您就可以看到
DataReader

SqlDataReader reader = command.ExecuteReader();
gvParentTasks.DataSource = reader;
gvParentTasks.DataBind();

最简单的方法是:使用
SqlDataAdapter
来填充
DataTable

DataTable data = new DataTable();
using (var connection = new SqlConnection(connString))
using (var command = new SqlCommand(queryStringParent, connection))
using(var da = new SqlDataAdapter(command))
{
    // you don't need to open/close the connection with Fill
    da.Fill(data);
}
gvParentTasks.DataSource = data;
gvParentTasks.DataBind();
但是,对于
GridView
直接使用
SqlDataSource
作为
DataSource
也可以:

SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);
gvParentTasks.DataSource = reader;
gvParentTasks.DataBind();
我认为你的问题的原因是:

while (reader.read())
{
}

它会消耗所有记录。

最简单的方法是:使用
SqlDataAdapter
来填充
数据表

DataTable data = new DataTable();
using (var connection = new SqlConnection(connString))
using (var command = new SqlCommand(queryStringParent, connection))
using(var da = new SqlDataAdapter(command))
{
    // you don't need to open/close the connection with Fill
    da.Fill(data);
}
gvParentTasks.DataSource = data;
gvParentTasks.DataBind();
但是,对于
GridView
直接使用
SqlDataSource
作为
DataSource
也可以:

SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);
gvParentTasks.DataSource = reader;
gvParentTasks.DataBind();
我认为你的问题的原因是:

while (reader.read())
{
}

它消耗所有记录。

它只显示一行:/@SearchForKnowledge,只需尝试上面的代码,不进行任何检查,它应该显示
DataReader中的所有行
,确保从查询中返回多行它只显示一行:/@SearchForKnowledge,只需尝试上面的代码,不进行任何检查,它应该显示
DataReader
中的所有行,确保从查询中返回多行数据源使用CommandArgument中的字符串,但这很好。下次我会记住:)谢谢you@SearchForKnowledge实际上,您也可以通过前端传递commandargue。它将通过Web方法或回发连接到后端。数据源使用CommandArgument中的字符串,但这很好。下次我会记住:)谢谢you@SearchForKnowledge实际上,您也可以通过前端传递commandargue。它将通过Web方法或回发连接到后端。