Member 11644373 Ответов: 2

Как изменить формат даты в заголовке gridview


Привет всем, я использую gridview для отображения данных, в которых я использовал дату в заголовке, например 01,02,03,04,05 до конца месяца, и всплывающая подсказка также используется для отображения описания данных всякий раз, когда пользователь наводит на него курсор мыши, но в конце, когда я вижу, что он отображает дату в заголовке в формате гггг-ММ-ДД, но я хочу только дату без месяца или года
if (e.Row.RowType == DataControlRowType.DataRow)
       {




               for (int i = 1; i <= e.Row.Cells.Count - 1; i++)
               {
                   if (e.Row.Cells[i].Text == "0" || string.IsNullOrEmpty(e.Row.Cells[i].Text) || e.Row.Cells[i].Text == " ")
                   {
                       e.Row.Cells[i].Text = "";
                   }
                   else
                   {
                       e.Row.Cells[i].BackColor = System.Drawing.Color.DarkOrange;

                       dateSetExport.Tables.Clear();
                       dateSetExport.Reset();
                       SqlParameter[] param = new SqlParameter[2];
                       param[0] = new SqlParameter("@Employe_Id", e.Row.Cells[0].Text.Split('-')[0]);
                       param[1] = new SqlParameter("@Startdate", gvDetails.HeaderRow.Cells[i].Text);
                       DataTable dt1 = DataHelper.getDataTableExecuteSP("usp_GetToolTip", param);
                       dt1.TableName = "ToolTip";
                       dateSetExport.Tables.Add(dt1);
                       string tooltip = "";
                       for (int j = 0; j < dt1.Rows.Count; j++)
                       {
                           tooltip = tooltip + dt1.Rows[j]["normal_working_hours"].ToString() + " Hours : " + dt1.Rows[j]["description"].ToString() + "\n\n";

                       }
                       e.Row.Cells[i].ToolTip = tooltip;

                   }

                   //date = date.Split('-')[0] + "-" + date.Split('-')[1] + "-" + Convert.ToString(Convert.ToInt32(date.Split('-')[2]) + 1);
                   //if(date=="2017-07-31")
                   //{
                   //    date = date.Split('-')[0] + "-" + Convert.ToString(Convert.ToInt32(date.Split('-')[1])+1)+ "-" + Convert.ToString(Convert.ToInt32(date.Split('-')[2]) -30);
                   //}
               }


       }


       e.Row.Cells[0].HorizontalAlign = HorizontalAlign.Left;

       if (e.Row.RowIndex == 1)
       {
           //Creating a gridview object
           GridView objGridView = (GridView)sender;

           //Creating a gridview row object
           GridViewRow objgridviewrow = new GridViewRow(1, 0, DataControlRowType.Header, DataControlRowState.Insert);

           //Creating a table cell object
           TableHeaderCell objtablecell = new TableHeaderCell();

           foreach (TableCell tblCell in e.Row.Cells)
           {
               objtablecell = new TableHeaderCell();
               objgridviewrow.Cells.Add(objtablecell);
           }

           objgridviewrow.ID = "NewHeader";
           objgridviewrow.BackColor = System.Drawing.Color.FromArgb(0xf0, 0x9b, 0x16);
           objgridviewrow.ForeColor = System.Drawing.Color.Black;
           objGridView.Controls[0].Controls.AddAt(0, objgridviewrow);


           GridViewRow firstRow = (GridViewRow)gvDetails.FindControl("NewHeader");
           GridViewRow secondRow = gvDetails.HeaderRow;

           for (int i = secondRow.Cells.Count - 2; i >= 0; i--)
           {
               if (secondRow.Cells[i].Text.Substring(5,2) == secondRow.Cells[i + 1].Text.Substring(5,2))
               {
                   firstRow.Cells[i].ColumnSpan = firstRow.Cells[i+1].ColumnSpan < 2 ? 2 : firstRow.Cells[i+1].ColumnSpan + 1;
                   firstRow.Cells[i + 1].Visible = false;

                   firstRow.Cells[i].Text = CellText(secondRow.Cells[i].Text.Substring(5, 2)) + " " + secondRow.Cells[i].Text.Substring(0, 4);
                   firstRow.Cells[i].HorizontalAlign = HorizontalAlign.Center;

               }

               if (i== 1 && (firstRow.Cells[1].Text==""))
               {
                   firstRow.Cells[1].Text = CellText(secondRow.Cells[1].Text.Substring(5, 2)) + " " + secondRow.Cells[1].Text.Substring(0, 4);
                   firstRow.Cells[1].HorizontalAlign = HorizontalAlign.Center;
               }
               else if (i == 0 && (firstRow.Cells[firstRow.Cells.Count - 1].Text == ""))
               {
                   string fullText = CellText(secondRow.Cells[secondRow.Cells.Count - 1].Text.Substring(5, 2)) + " " + secondRow.Cells[secondRow.Cells.Count - 1].Text.Substring(0, 4);

                   firstRow.Cells[firstRow.Cells.Count - 1].Text = fullText;

                   firstRow.Cells[firstRow.Cells.Count - 1].HorizontalAlign = HorizontalAlign.Center;
               }

           }

           //foreach (TableCell tblCell in gvDetails.HeaderRow.Cells)
           //{
           //    if (tblCell.Text != "Employee Name")
           //    {
           //        tblCell.Text = tblCell.Text.Substring(8, 2);
           //    }
           //}
       }
   }

Это моя сетка
<asp:GridView ID="gvDetails" runat="server" Style="font-size: 13px; width: 100%;" CssClass="grid clsWrap" AutoGenerateColumns="True" OnRowDataBound="gvDetails_RowDataBound">

       <HeaderStyle Font-Bold="False" CssClass="Font gvheaderstyle" Wrap="False"/>
       <PagerStyle CssClass="gridB" ForeColor="WhiteSmoke" />
       <RowStyle HorizontalAlign="Center" />
   </asp:GridView>


Что я уже пробовал:

//foreach (TableCell tblCell in gvDetails.HeaderRow.Cells)
           //{
           //    if (tblCell.Text != "Employee Name")
           //    {
           //        tblCell.Text = tblCell.Text.Substring(8, 2);
           //    }
           //}


это для каждого преобразует дату в формате, который я хочу, но если я раскомментируйте эту операцию foreach это эффект всплывающей подсказки в каждой строке, в результате при чтении данных из одной строки, если я комментирую его влияние даты в заголовке таблицы результатов в формате гггг-ММ-ДД, но я хочу только день

Помоги мне

Kornfeld Eliyahu Peter

Я не думаю, что вы можете сделать это с помощью автоматически сгенерированных столбцов, вы должны создать свои собственные шаблоны для заголовков и столбцов и добавить туда строку формата...

2 Ответов

Рейтинг:
2

chandrasekharvsg

требование ur не упоминается clearly.in вид сетки u r установите столбцы автоматической генерации true


Рейтинг:
2

omerkamran

Вместо столбцы автоматически, вы должны использовать пользовательские генерации столбцов в сетке. Например, в моей таблице у меня есть два столбца дата и имя. Вот что я собираюсь сделать

<asp:GridView ID="gvDetails" runat="server" Style="font-size: 13px; width: 100%;" CssClass="grid clsWrap" AutoGenerateColumns="True" OnRowDataBound="gvDetails_RowDataBound">
 
        <HeaderStyle Font-Bold="False" CssClass="Font gvheaderstyle" Wrap="False"/>
        <PagerStyle CssClass="gridB" ForeColor="WhiteSmoke" />
        <RowStyle HorizontalAlign="Center" />
<Columns>                            
                            <asp:BoundField DataField="Date" DataFormatString="{0:MM/dd/yyyy}"  HeaderText="Order Date" >                               
                                 
                            </asp:BoundField>
                            <asp:BoundField DataField="Name" HeaderText="Name" >
                                
                            </asp:BoundField>
    </asp:GridView>


Обратите внимание на первое поле связанных с документировано="дата" имеет свойство DataFormat строку. вы можете изменить желаемый результат.