0

i have a problems, i try to merge cells in gridview that generate from templatefield but it is not working. the cell is first cell in gridview which contain datetime but i eliminate time before bind in gridview. i want to show user different value with same date without considering time. this code i get is also considering time although i already eliminate time :

 <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>

code behind :

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 get :

output that i want :

output that i want

NFH
  • 17
  • 8
  • Do u require the same output to be copied for both the rows if having same date? – Naveen Gogineni May 30 '17 at 04:16
  • that not same output. it have different value sometimes same value but in different column but same date. i want to merge date column if they are having same date :) – NFH May 30 '17 at 04:21

2 Answers2

1

Change your GridView's Request Date Column to BoundField

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

Now try doing something like this in your 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;
                }
            }
        }
    }
Naveen Gogineni
  • 306
  • 2
  • 11
0

try using this in code behind.

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;
                 }
             }
         }
     }
 }