0
try
        {
            String empid1 = Request.QueryString["MyText"];

            int empid = int.Parse(empid1);
            string constr = System.Configuration.ConfigurationManager.ConnectionStrings["EmployeeDatabase"].ConnectionString;
            SqlConnection con = new SqlConnection(constr);
            con.Open();
            SqlCommand cmd = new SqlCommand("ReportingManagers", con);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@EmpID", SqlDbType.Int, 0).Value = empid;

            SqlDataReader dr = cmd.ExecuteReader();
            dr.Read();
            LinkButton3.Text = string.Empty;
            int i = 1;
             while(dr.Read())
            {


                TreeNode parentNode = new TreeNode("L" + i++ + "Manager : " + dr["Emp_Name"].ToString());
                parentNode.Value = dr["Emp_ID"].ToString();
                TreeView1.Nodes.Add(parentNode);
                parentNode.ChildNodes.Add(new TreeNode("Short ID : " + dr["Short_ID"].ToString()));
                parentNode.ChildNodes.Add(new TreeNode("EmpID : " + dr["Emp_ID"].ToString()));
              //  LinkButton3.Text = "Reporting Managers";  
            }

             DataTable dt = new DataTable();
             dt.Load(dr);
             if (dt.Rows.Count > 1)
             {
                 LinkButton3.Text = "Reporting Managers";  
             }

            dr.Close();
            con.Close();
        }

上記のコードで if ループが実行されない理由を説明してください。データ テーブル dt で行数 '0' を取得したことがわかりますが、私の dr は行がある場合に true を示しています..このシーンで SQL アダプターを使用するつもりはありません。

このシナリオでデータ テーブルの行数を取得するにはどうすればよいですか?

4

2 に答える 2

0

リーダーを TreeNode 構造体 (リーダー全体を読み取る while ループ) に読み込むときに、既にリーダーを読んでいるからです。DataReaders は転送専用であるため、リーダーを「リセット」することもできません。

于 2013-01-31T13:40:32.840 に答える