2015-06-22 24 views
1

enter image description hereenter image description hereenter image description hereenter image description here我想向教師顯示時間表,即他們將在同一日期分配給他們的不同批次,但我想在單個網格視圖中顯示。我嘗試過不同但未工作。他們將有第一個小時和第二小時不同的批次,我想顯示那裏主題和批次在單列中,但它顯示在單列表視圖中的兩列。請幫我從這些問題爲什麼distinct()在我的sqldatasource中不起作用?

<label>From Date</label> 
<asp:TextBox ID="fromdate" runat="server" TextMode="Date"></asp:TextBox> 
<label>To Date</label> 
<asp:TextBox ID="todate" runat="server" TextMode="Date"></asp:TextBox> 
<asp:Button ID="viewid" runat="server" OnClick="viewid_Click" Text="View" CssClass="button2"/> 
<asp:GridView ID="Viewsubjects" runat="server" AutoGenerateColumns="False" DataSourceID="batch1" CssClass="mGrid1"> 
    <Columns> 
     <asp:BoundField DataField="datedif" HeaderText="datedif" SortExpression="datedif" /> 
     <asp:TemplateField HeaderText="Hour1" SortExpression="subject1"> 
      <ItemTemplate> 
       <asp:Label ID="Label1" runat="server" Visible='<%# Eval("subject1")!=DBNull.Value ? true:false %>' Text='<%#"Subject:"+Eval("subject1")%>'></asp:Label> 
       <br /> 
       <asp:Label ID="label6" runat="server" Visible='<%# (Eval("batch")!=DBNull.Value && Eval("subject1")!=DBNull.Value) ? true:false %>' Text='<%#"Batch:"+Eval("batch")%>'></asp:Label> 
     </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Hour2" SortExpression="subject2"> 
      <ItemTemplate> 
       <asp:Label ID="Label2" runat="server" Visible='<%# Eval("subject2")!=DBNull.Value ? true:false %>' Text='<%#"Subject:"+Eval("subject2")%>'></asp:Label> 
       <br /> 
       <asp:Label ID="label7" runat="server" Visible='<%# (Eval("batch")!=DBNull.Value && Eval("subject2")!=DBNull.Value) ? true:false %>' Text='<%#"Batch:"+Eval("batch")%>'></asp:Label> 
     </ItemTemplate> 
      </asp:TemplateField> 
     <asp:TemplateField HeaderText="Hour3" SortExpression="subject3"> 
      <ItemTemplate> 
       <asp:Label ID="Label3" runat="server" Visible='<%# Eval("subject3")!=DBNull.Value ? true:false %>' Text='<%#"Subject:"+Eval("subject3")%>'></asp:Label> 
       <br /> 
       <asp:Label ID="label8" runat="server" Visible='<%# (Eval("batch")!=DBNull.Value && Eval("subject3")!=DBNull.Value) ? true:false %>' Text='<%#"Batch:"+Eval("batch")%>'></asp:Label> 
     </ItemTemplate> 
      </asp:TemplateField> 
     <asp:TemplateField HeaderText="Hour4" SortExpression="subject4"> 
      <ItemTemplate> 
       <asp:Label ID="Label4" runat="server" Visible='<%# Eval("subject4")!=DBNull.Value ? true:false %>' Text='<%#"Subject:"+Eval("subject4")%>'></asp:Label> 
       <br /> 
       <asp:Label ID="label9" runat="server" Visible='<%# (Eval("batch")!=DBNull.Value && Eval("subject4")!=DBNull.Value) ? true:false %>' Text='<%#"Batch:"+Eval("batch")%>'></asp:Label> 
     </ItemTemplate> 
      </asp:TemplateField> 
     <asp:TemplateField HeaderText="Hour5" SortExpression="subject5"> 
      <ItemTemplate> 
       <asp:Label ID="Label5" runat="server" Visible='<%# Eval("subject5")!=DBNull.Value ? true:false %>' Text='<%#"Subject:"+Eval("subject5")%>'></asp:Label> 
       <br /> 
       <asp:Label ID="label10" runat="server" Visible='<%# (Eval("batch")!=DBNull.Value && Eval("subject5")!=DBNull.Value) ? true:false %>' Text='<%#"Batch:"+Eval("batch")%>'></asp:Label> 
     </ItemTemplate> 
      </asp:TemplateField> 
    </Columns> 
</asp:GridView> 
<asp:SqlDataSource ID="batch1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:Database1ConnectionString1 %>" 
    SelectCommand="SELECT DISTINCT [datedif], [subject1], [subject2], [subject3], [subject4], [subject5],[batch] FROM [test] WHERE ([datedif] &gt;= @datedif)"> 
    <SelectParameters> 
     <asp:ControlParameter ControlID="fromdate" Name="datedif" PropertyName="Text" Type="String" /> 
    </SelectParameters> 
</asp:SqlDataSource> 

這是怎麼我得到的輸出

enter image description here

+0

什麼行做你的SQL'SELECT'語句返回給定?你可以檢查一下這些實際上是不同的嗎? –

+0

SELECT DISTINCT [DATEDIF],[subject1],[subject2],[subject3],[subject4],[subject5],[批次] FROM [測試] WHERE DATEDIF之間 ' 「+ fromdate1.text +」' 和「「+ todate1的.text +「」。這些是我用來顯示某些特定值的查詢。 –

+0

看到我的表上面,你會得到一些想法 –

回答

2

嘗試這些查詢如下─

create table timetable1(date date,hour1 int,subject1 varchar(255),batch1 varchar(20),hour2 int,subject2 varchar(255),batch2 varchar(20),hour3 int,subject3 varchar(255),batch3 varchar(20),faculty varchar(255)); 

insert into timetable1 values(cast(getdate() as date), 1, 'subject1','B1',0, 's2','b2',3,'s3','b3','ms. hart'); 
insert into timetable1 values(cast(getdate() as date), 1, 'subject12','B12',0, 's12','b12',3,'s13','b13','ms. hart11'); 
insert into timetable1 values(cast(getdate() as date), 1, 'subject13','B122',0, 's222','b222',3,'s23','b23','ms. hart22'); 

select date,(subject1+' '+batch1) as hour1, (subject2+' '+batch2) as hour2,(subject3+' '+batch3) as hour3,faculty from timetable1group by date, faculty,subject1,subject2,subject3,batch1,batch2,batch3 
+0

非常感謝我得到的輸出 –

+0

@RavintherM:那你應該支付賞金! ! –

+0

我已經給它兄弟 –

2

什麼你得到實際上是不同的,因爲每行有不同的值。你正在尋找的是一個「分組依據」,它將按日期和教師分組你的價值觀。我的解決方案是基於替換當前的解決方案:

date  hour1 subject1  hour2 subject2 hour3 subject3 faculty 
2015-06-25 1  subject 1 0  (null)  0  (null)  ms. hart 
2015-06-25 0  (null)  1  subject 2 0  (null)  ms. hart 
2015-06-25 0  (null)  0  (null)  1  subject 3 ms. hart 

date  hour1  hour2  hour3  faculty 
|----------|----------|-----------|-----------|----------| 
2015-06-25 subject 1 subject 3 subject 3 ms. hart 

如果是這種假設是正確的,那麼這裏是我使用的查詢(我創建了自己的表,因爲你沒有不提供DDL,但如果你有問題,讓我知道)

select date,max(subject1) hour1, max(subject3) hour2, max(subject3) hour3, faculty from timetable 
group by date, faculty 

這裏是SQL搗鼓你嘗試:)

http://sqlfiddle.com/#!6/c1850/3

+0

所有條目,但我想還可以在批次中也 –

+1

你知道如何將列添加到查詢,是否正確?因爲這就是你所要做的。 –

+0

我有五個教師如faculty1,faculty2,faculty3,faculty4,faculty5.i希望只有特定的教師輸出可有人建議我一些想法 –