2017-07-26 106 views
1

这是创建GridView的一切与C#发生的代码,我的意思是填充了C#代码:日期格式在ASP.net与SQL填充的GridView控件 - 不绑定列

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="STANDBY_JOURNALS Email.aspx.cs" Inherits="STANDBY_JOURNALS_Email.STANDBY_JOURNALS_Email" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 

     <asp:Button ID="Button1" runat="server" Text="SQL" OnClick="Button1_Click" /> 
     <asp:Button ID="Button2" runat="server" Text="SEND" OnClick="Button2_Click" /> 
     <br /> 
     <asp:GridView ID="GridView1" runat="server" Font-Size="Smaller"> 
     </asp:GridView> 


    </div> 
    </form> 
</body> 
</html> 

我需要的日期格式添加到该GridView控件,但如果我尝试使用BOUNDFIELD,它做什么,它在表的开头创建一个列,例如:

<asp:GridView ID="GridView1" runat="server" Font-Size="Smaller"> 
    <Columns> 
     <asp:BoundField DataField="Journal Date" DataFormatString="{0:MMMM d, yyyy}" /> 
    </Columns> 
</asp:GridView> 

enter image description here

这是我的代码:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Net; 
using System.Net.Mail; 
using System.Data; 
using System.Data.SqlClient; 
using System.IO; 

namespace STANDBY_JOURNALS_Email 
{ 
    public partial class STANDBY_JOURNALS_Email : System.Web.UI.Page 
    { 

     SqlConnection vid = new SqlConnection("Data Source=xxxxxxxx; Initial Catalog=xxxxxxxxxxx; User id=xxxxxx; Password=xxxxxxx"); 

     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

     protected void Button1_Click(object sender, EventArgs e) 
     { 
      string sqlquery1 = "SELECT * FROM DBO.STANDBY_JOURNALS_DQMS WHERE [Ledger Grp] IN ('ACTUALS','GRP_FXRATE','CONSEGRP') AND [Source] = 'CON' OR [Source] LIKE 'Q%' ORDER BY [Source], [SystemDateTime],[SystemTime] ASC"; 

      String str = sqlquery1; 
      SqlCommand xp = new SqlCommand(str, vid); 
      vid.Open(); 
      xp.ExecuteNonQuery(); 
      SqlDataAdapter da = new SqlDataAdapter(); 
      da.SelectCommand = xp; 
      DataSet ds = new DataSet(); 
      da.Fill(ds, "Name"); 
      GridView1.DataSource = ds; 
      GridView1.DataBind(); 
      vid.Close(); 
     } 
     public override void VerifyRenderingInServerForm(Control control) 
     { 
      /* Verifies that the control is rendered */ 
     } 
     protected void Button2_Click(object sender, EventArgs e) 
     { 
      using (StringWriter sw = new StringWriter()) 
      { 
       using (HtmlTextWriter hw = new HtmlTextWriter(sw)) 
       { 


        String EmailFrom = "[email protected]"; 
        String EmailTo = "[email protected]"; 
        String EmailSubject = "this is a subject"; 
        //String EmailBody = "Cuerpo del Mensaje"; 



        GridView1.RenderControl(hw); 
        StringReader sr = new StringReader(sw.ToString()); 
        MailMessage mm = new MailMessage(EmailFrom, EmailTo); 
        mm.Subject = EmailSubject; 
        mm.Body = "Report:<hr />" + sw.ToString(); ; 
        mm.IsBodyHtml = true; 
        SmtpClient smtp = new SmtpClient(); 
        smtp.Host = "XXXXXXXXXXXXXX"; 
        smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; 
        smtp.Port = 25; 
        smtp.Timeout = 20000; 
        smtp.Send(mm); 
       } 
      } 
     } 
    } 
} 

任何人都可以帮助如何影响使用GridView创建的表中的列吗?

+0

因为您正在使用boundfield。为您的模板字段的编辑格式,而不是 – Preet

回答

2

设置AutoGenerateColumns GridView的属性为false(我认为这是您寻找的唯一解决方案),并为所有需要的列添加BoundFields。

或者,如果您使用的模板列然后有选项来设置日期格式为您TemplateField。无需添加BoundField喜欢:

<asp:TemplateField ItemStyle-Width = "100px" HeaderText = "date" 
     SortExpression="date" > 
    <ItemTemplate> 
     <asp:Label ID="lblreceived_at" runat="server" 
       Text='<%# Eval("date","{0:d}")%>'></asp:Label> 
    </ItemTemplate> 
</asp:TemplateField> 

对于所有选项,请参考: http://www.codedigest.com/Articles/ASPNET/137_How_to_format_DateTime_in_GridView_BoundColumn_and_TemplateColumn.aspx

+0

你能帮助我如何包括我的代码?..因为我不知道 –

+0

分享你的日志日期字段或全GridView控件代码代码不需要C#代码 – Preet

+0

如果你不使用template fields only boundfields then you might have two boundfields for Journal Date – Preet

2

在BoudField,试试这个格式:

DataFormatString="{0:dd/MM/yyyy}" 

输出:

01/06/2017 00:00:00 
+0

那不行..因为我没有使用BOUNDFIELD –

+0

你使用的是mysql吗? – AsifAli72090

0

最简单的方法是仅使用SQL MID()在查询中,

SELECT MID(Journal_Date,1,8) AS JD FROM DBO.STANDBY_JOURNALS_DQMS 

它会给你

17年1月6日

+0

存储在SQL表中的数据是DATE格式..它通过gridview转换为日期时间..所以这个解决方案将不起作用..谢谢队友 –

1

如果您在您的SQL查询中添加以下Convert功能,你的目标一定会实现。例如:

Select CONVERT(varchar,YOUR_DATE_COLUMN,107) as JournalDate, * From YOUR_TABLE_NAME