2017-05-30 61 views
0

我有一個問題,我嘗試合併GridView中從templatefield生成的單元格,但它不工作。該單元格是gridview中第一個包含日期時間的單元格,但我在gridview中綁定之前消除了時間。我想在不考慮時間的情況下向用戶顯示同一日期的不同價值。這個代碼我得到的是還考慮時間,雖然我已經消除時間:背後合併gridview單元格不工作

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnPreRender="GridView1_PreRender" > 
     <Columns> 
      <asp:TemplateField HeaderText="Request Date"> 
       <ItemTemplate><%#Eval("request_date")%></ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="A01"> 
       <ItemTemplate> 
        <%#Eval("prod_line").ToString() == "A01" ? "Job Order: "+Eval("jo_no") +"\n\n\n\n\nQuantity: "+Eval("qty")+"\n\n\n\n\nNeed by Date: "+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="A02"> 
       <ItemTemplate> 
        <%#Eval("prod_line").ToString() == "A02" ?"Job Order: "+Eval("jo_no") +"\n\n\n\n\nQuantity: "+Eval("qty")+"\n\n\n\nNeed by Date: "+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="A03"> 
       <ItemTemplate> 
        <%#Eval("prod_line").ToString() == "A03" ? "Job Order: "+Eval("jo_no") +"\n\n\n\n\nQuantity: "+Eval("qty")+"\n\n\n\nNeed by Date: "+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="A04"> 
       <ItemTemplate> 
        <%#Eval("prod_line").ToString() == "A04" ? "Job Order: "+Eval("jo_no") +"\n\n\n\n\nQuantity: "+Eval("qty")+"\n\n\n\nNeed by Date: "+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="A05"> 
       <ItemTemplate> 
        <%#Eval("prod_line").ToString() == "A05" ? "Job Order: "+Eval("jo_no") +"\n\n\n\n\nQuantity: "+Eval("qty")+"\n\n\n\nNeed by Date: "+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="A06"> 
       <ItemTemplate> 
        <%#Eval("prod_line").ToString() == "A06" ? "Job Order: "+Eval("jo_no") +"\n\n\n\n\nQuantity: "+Eval("qty")+"\n\n\n\nNeed by Date: "+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="A07"> 
       <ItemTemplate> 
        <%#Eval("prod_line").ToString() == "A07" ? "Job Order: "+Eval("jo_no") +"\n\n\n\n\nQuantity: "+Eval("qty")+"\n\n\n\nNeed by Date: "+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="A08"> 
       <ItemTemplate> 
        <%#Eval("prod_line").ToString() == "A08" ? "Job Order: "+Eval("jo_no") +"\n\n\n\n\nQuantity: "+Eval("qty")+"\n\n\n\nNeed by Date: "+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="A09"> 
       <ItemTemplate> 
        <%#Eval("prod_line").ToString() == "A09" ? "Job Order: "+Eval("jo_no") +"\n\n\n\n\nQuantity: "+Eval("qty")+"\n\n\n\nNeed by Date: "+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="A10"> 
       <ItemTemplate> 
        <%#Eval("prod_line").ToString() == "A10" ?"Job Order: "+Eval("jo_no") +"\n\n\n\n\nQuantity: "+Eval("qty")+"\n\n\n\nNeed by Date: "+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="A11"> 
       <ItemTemplate> 
        <%#Eval("prod_line").ToString() == "A11" ? "Job Order: "+Eval("jo_no") +"\n\n\n\n\nQuantity: "+Eval("qty")+"\n\n\n\nNeed by Date: "+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="A12"> 
       <ItemTemplate> 
        <%#Eval("prod_line").ToString() == "A12" ? "Job Order: "+Eval("jo_no") +"\n\n\n\n\nQuantity: "+Eval("qty")+"\n\n\n\nNeed by Date: "+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="A13"> 
       <ItemTemplate> 
        <%#Eval("prod_line").ToString() == "A13" ?"Job Order: "+Eval("jo_no") +"\n\n\n\n\nQuantity: "+Eval("qty")+"\n\n\n\nNeed by Date: "+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="A14"> 
       <ItemTemplate> 
        <%#Eval("prod_line").ToString() == "A14" ? "Job Order: "+Eval("jo_no") +"\n\n\n\n\nQuantity: "+Eval("qty")+"\n\n\n\nNeed by Date: "+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="A15"> 
       <ItemTemplate> 
        <%#Eval("prod_line").ToString() == "A15" ?"Job Order: "+Eval("jo_no") +"\n\n\n\n\nQuantity: "+Eval("qty")+"\n\n\n\nNeed by Date: "+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="A16"> 
       <ItemTemplate> 
        <%#Eval("prod_line").ToString() == "A16" ? "Job Order: "+Eval("jo_no") +"\n\n\n\n\nQuantity: "+Eval("qty")+"\n\n\n\nNeed by Date: "+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="A17"> 
       <ItemTemplate> 
        <%#Eval("prod_line").ToString() == "A17" ?"Job Order: "+Eval("jo_no") +"\n\n\n\n\nQuantity: "+Eval("qty")+"\n\n\n\nNeed by Date: "+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="A18"> 
       <ItemTemplate> 
        <%#Eval("prod_line").ToString() == "A18" ? "Job Order: "+Eval("jo_no") +"\n\n\n\n\nQuantity: "+Eval("qty")+"\n\n\n\nNeed by Date: "+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 

代碼:

protected void Page_Load(object sender, EventArgs e) 
{ 
    con.Open(); 
    DataTable dt = new DataTable("CutPanelCard"); 
    query = "select CONVERT(VARCHAR(10),a.request_date ,101) as request_date, a.prod_line,a.jo_no,a.qty,CONVERT(VARCHAR(10),a.need_by_date ,101) as need_by_date, b.process_id from CutPanelCard a LEFT JOIN CutPanelConfirmation b on b.req_id=a.req_id where a.request_date >= DATEADD(day,-8, GETDATE()) order by a.request_date"; 

    cmd = new SqlCommand(query, con); 
    SqlDataAdapter da = new SqlDataAdapter(cmd); 
    da.Fill(dt); 

    GridView1.CellPadding = 10; 
    GridView1.DataSource = dt; 
    GridView1.DataBind(); 
    //GridView_Row_Merger(GridView1); 
    con.Close(); 
} 

輸出,我得到:我想 output that i get :

輸出:

output that i want

+0

不要ü需要相同的輸出爲如果具有相同的日期,則爲兩個行復制? –

+0

那不一樣的輸出。它有不同的值,有時候是相同的值,但是在不同的列中但是相同的日期。我想合併日期列,如果他們有相同的日期:) – NFH

回答

0

嘗試在後面的代碼中使用它。

protected void OnDataBound(object sender, EventArgs e) 
{ 
    for (int i = GridView1.Rows.Count - 1; i > 0; i--) 
    { 
     GridViewRow row = GridView1.Rows[i]; 
     GridViewRow previousRow = GridView1.Rows[i - 1]; 
     for (int j = 0; j < row.Cells.Count; j++) 
     { 
      if (row.Cells[j].Text == previousRow.Cells[j].Text) 
      { 
       if (previousRow.Cells[j].RowSpan == 0) 
       { 
        if (row.Cells[j].RowSpan == 0) 
        { 
         previousRow.Cells[j].RowSpan += 2; 
        } 
        else 
        { 
        previousRow.Cells[j].RowSpan = row.Cells[j].RowSpan + 1; 
        } 
        row.Cells[j].Visible = false; 
       } 
      } 
     } 
    } 
} 
+0

不工作仍然得到像第一個相同的輸出:( – NFH

+0

對不起,我會盡力給你另一個答案 –

+0

病待了謝謝你: ) – NFH

1

GridView的請求日期欄更改爲綁定列

<asp:BoundField HeaderText="Request Date" DataField="request_date" /> 

現在嘗試在你的的GridView的RowDataBound做這樣的事情

protected void gvData_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      int index = e.Row.RowIndex; 
      GridViewRow prevRow = null; 
      GridViewRow currentRow = e.Row; 
      if (index > 0) 
      { 
       int PrevIndex = index - 1; 
       prevRow = (GridViewRow)gvData.Rows[PrevIndex]; 
      } 
      if (prevRow != null) 
      { 
       if (prevRow.Cells[0].Text == currentRow.Cells[0].Text && (prevRow.Cells[0].Text != "" && currentRow.Cells[0].Text != "")) 
       { 
        prevRow.Cells[0].RowSpan += 2; 
        currentRow.Cells.RemoveAt(0); 
       } 
       else 
       { 
        prevRow.Cells[0].RowSpan += 0; 
       } 
      } 
     } 
    } 
+0

如果您對上述代碼有任何疑問,請在此處註釋。 –