簡體   English   中英

一個GridView中的asp.net多個sqlcommands

[英]asp.net multiple sqlcommands in one GridView

我在一個GridView中顯示多個sql命令時遇到問題。 也許我不需要從兩個表中顯示兩個sqlcommand,但是我不知道該怎么做。 第一條命令是獲取所有在兩個日期之間休假的雇員。 我正在使用的第二個命令按ID檢索日期。 但是我不知道如何將它們都綁定到一個GridView上以顯示為附加圖像。 先感謝您。

我現在得到的是
阿爾伯特2016-03-16
阿爾伯特2016-03-17

阿爾伯特2016-03-18
約翰娜2016-03-17

約翰娜2016-03-18
埃里克2016-03-18

代替
阿爾伯特2016-03-16,2016-03-17,2016-03-18
約翰娜2016-03-17,2016-03-18
埃里克2016-03-18
我想我必須在兩個While語句之間循環,也許要用一個sqlcommand循環?
在此處輸入圖片說明

我的代碼是:

    using (SqlConnection con = new SqlConnection(connection))
{
 con.Open();
 SqlCommand cmd = new SqlCommand(" SELECT distinct E.EmployeeId, E.FirstName  
 FROM Employee E INNER JOIN Vacation V ON E.EmployeeId = V.EmployeeId " +
  " WHERE ((V.Dates >= @Start AND V.Dates <= @End) ) ", con);
  cmd.Parameters.AddWithValue("@Start", (Calendar1.SelectedDates[0]).Date.ToShortDateString());
 cmd.Parameters.AddWithValue("@End", (Calendar1.SelectedDates[Calendar1.SelectedDates.Count - 1]).Date.ToShortDateString());
using (SqlDataReader dr = cmd.ExecuteReader())
 {
   while (dr.Read())
    {

 Response.Write((dr[1]).ToString() + "  "); // Cheack if retrivs Employeename
 // Now By Id I want to get all dates belong to specifik employee

SqlCommand cmd2 = new SqlCommand(" SELECT V.Dates FROM Vacation V " +
" WHERE ((V.Dates >= @Start AND V.Dates <= @End) ) ", con);
cmd2.Parameters.AddWithValue("@Start", (Calendar1.SelectedDates[0]).Date.ToShortDateString());
cmd2.Parameters.AddWithValue("@End", (Calendar1.SelectedDates[Calendar1.SelectedDates.Count - 1]).Date.ToShortDateString());
cmd2.Parameters.AddWithValue("@EmployeeId", Convert.ToInt32(dr[0]));                                    
using (SqlDataReader dr2 = cmd2.ExecuteReader())
{
 while (dr2.Read())
    {
    //Response.Write(Convert.ToDateTime(dr2[0]));
     GridView7.DataSource = cmd2.ExecuteReader();
GridView7.DataBind();
    }

   }
       Response.Write("<br/>");
 } 


  }
    con.close();
}
GridView7.DataSource = cmd.ExecuteReader();
GridView7.DataBind();

FOR XML PATH語法允許您的查詢將多個值分組為一個值:

SELECT 
    E.EmployeeId, 
    E.FirstName,
    REPLACE(STUFF((
        SELECT 
            COALESCE('¶' + V.Dates, '')
        FROM 
            Vacation V 
        WHERE 
            V.EmployeeId = E.EmployeeId AND V.Dates >= @Start AND V.Dates <= @End
        FOR XML PATH('')), 1, 1, ''), '¶', ', ') AS VacationDates
FROM 
    Employee E

如果需要,可以用其他東西替換', '分隔符。

注意:抱歉,多次編輯。 我只是不確定您如何聯系員工,假期和約會。 這段代碼基本上顯示了FOR XML PATH語法的思想。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM