Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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
GridView中的c#SQLDATAadapter问题_C#_Asp.net_Gridview - Fatal编程技术网

GridView中的c#SQLDATAadapter问题

GridView中的c#SQLDATAadapter问题,c#,asp.net,gridview,C#,Asp.net,Gridview,我试图将SQL查询的结果附加到gridview,而不创建集合,而是使用SQLdataAdapter DataTable dt = new DataTable(); using (SqlCommand cm = cn.CreateCommand()) { StringBuilder ct = new StringBuilder(); ct.AppendLine("SELECT DIST

我试图将SQL查询的结果附加到gridview,而不创建集合,而是使用SQLdataAdapter

DataTable dt = new DataTable();
            using (SqlCommand cm = cn.CreateCommand())
            {
                StringBuilder ct = new StringBuilder();

                ct.AppendLine("SELECT DISTINCT........");
                ct.AppendLine("FROM ...... er");
                ct.AppendLine("INNER JOIN ....... ev ON er.eKey = ev.eKey");
                ct.AppendLine("WHERE UserId ='" + _CurrentUser.UserId + "' AND [Type] = 'R' AND EndDate is NULL");
                ct.AppendLine("Order By er.eKey DESC");
                Debug.WriteLine(ct.ToString());
                cm.CommandType = CommandType.Text;
                cm.CommandText = ct.ToString();
                System.Diagnostics.Debug.WriteLine(ct.ToString());
                SqlDataAdapter dr = new SqlDataAdapter(cm);
                dr.Fill(dt);
            }
以前,我使用一种简单的表格格式来表示我的数据,效果很好

        //    int i = 0;
        //    foreach (DataRow row in dt.Rows)
        //    {
        //        if (i++ == 0)
        //            Response.Write("<span class='style5'><strong><span class='style6'><center>Existing Enrollments:</center><br/><br/></span></strong></span><table><tr><th>Enroll Key<br/></th><th>Name<br/><br/></th><th>DBA<br/><br/></th><th>Address<br/><br/></th><th>City<br/><br/></th><th>State<br/><br/></th><th>Zip<br/><br/></th><th>TIN<br/><br/></th><th>UserID<br/><br/></th></tr>");
        //        Response.Write("<tr>");
        //        foreach (DataColumn column in dt.Columns)
        //        {
        //            Response.Write("<td>" + row[column].ToString() + "</td>");
        //        }
它给了我一个空的网格视图

我的推荐人:-


有人能帮我吗?查询将返回多行

我会直接将datatable分配给gridview: gvwEnrollments.DataSource=dt


由于这不是从sql查询返回的数据集,因此直接将结果表分配给gridview应该可以正常工作。

您将dt定义为DataTable

DataTable dt = new DataTable();
也许它应该是一个数据集


或者。。只需使用
gvwEnrollments.DataSource=dt

表不是DataTable的属性,而是DataSet的属性。此外,可能需要更新数据源,除非在实际获取数据之前设置控件的数据源

你可以试试:

DataSet ds = new DataSet();
ds.Tables.Add(dt);
gvwEnrollments.DataSource=ds;

我意识到我改变的很快,但是我的gridview显示没有记录。。。然而,之前我使用的是一个简单的表,这很有效。我怀疑sql查询没有返回任何行,然后。将您的dt放在手表中,数据源分配上的断点,并检查dt中的行。然后你就会知道你的dt是否真的从数据库中获取了值。嗯,很奇怪,使用我的初始表方法,我得到了预期填充的所有值,但是使用dt,我得到了一个{}集。我认为,一旦你将数据放入该表中,直接赋值就可以了:)。也许可以尝试在不使用数据适配器的情况下编写sql查询?令人困惑的是,使用同一个sqldataadapter,我将所有值填充到我的表中……您是否查看了我的表代码?这是我的问题。。我更新了它以显示我是如何填充表的。是的,我尝试了DataSet和直接赋值。但我的gridview显示为空。我更新了我的问题。如果您有SSM,请使用Debug.WriteLine(ct.ToString())的输出;并粘贴到SSMS中-查看是否得到结果,删除where子句-检查是否有结果,逐点重新添加where子句,直到找到排除所有结果的部分。
DataSet ds = new DataSet();
ds.Tables.Add(dt);
gvwEnrollments.DataSource=ds;