Как изменить формат даты в заголовке 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
Я не думаю, что вы можете сделать это с помощью автоматически сгенерированных столбцов, вы должны создать свои собственные шаблоны для заголовков и столбцов и добавить туда строку формата...