如何在C#中的Label中只显示日期

问题描述 投票:0回答:1

我在标签中使用组合选择的索引改变事件,从表中获取数据,除了日期之外,一切都很顺利。问题:标签上显示的日期是12:00,而我的标签上显示的是 我只需要日期(ddMMMyyyy),不需要时间。 12:00. 这个日期在表格的列和网格视图中都是完美的,只有在标签(AcPtRgDateLbl.Text)中显示错误。只有标签中的标签(AcPtRgDateLbl.Text)显示错误。

这里是代码。

private void AcPtPtrDd_SelectedIndexChanged(object sender, EventArgs e)
        {
            cmd = new SqlCommand("SELECT * FROM Patients where pt_ptr='" + AcPtPtrDd.Text.ToString() + "'", con);
            con.Open();
            cmd.ExecuteNonQuery();
            SqlDataReader dr;
            dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                string idn = (string)dr["pt_name"].ToString();
                string idn1 = (string)dr["pt_date"].ToString();//Problem is here Please help to solve it.
                string idn4 = (string)dr["pt_aid"].ToString();
                string idn9 = (string)dr["pt_phone"].ToString();
                AcPtNameLbl.Text = idn;
                AcPtRgDateLbl.Text = idn1;
                AcPtAidLbl.Text = idn4;
                AcPtPhonLbl.Text = idn9;
                if (AcPtAidLbl.Text == "-")
                {
                    AcPtAidTxt.Enabled = false;
                }
                else
                {
                    AcPtAidTxt.Enabled = true;
                }
            }
            con.Close();
        }

来自SQL的Tabel:

ALTER procedure [dbo].[pa_getPtAccountsDataLike]
@data nvarchar(50)
as
select
p.pta_id as 'ID',
p.pta_ptr as 'PtR',
p.pta_date as 'Date',
p.pta_fee as 'Fee',
p.pta_dis as 'Discount',
p.pta_aid as 'Aid',
p.pta_rcv as 'Receive',
p.pta_bal as 'Balance'
from PtAccounts p
where
p.pta_ptr like '%'+@data+'%'
or
p.pta_date like '%'+@data+'%'
order by p.pta_ptr desc
c# date label
1个回答
1
投票

试试读为 DateTime 然后表示为 string

string idn1 = Convert.ToDateTime(dr["pt_date"]).ToString("dd/MMM/yyyy");

更多代码(让我们来刷刷你的解决方案)。

//DONE: required fields only; parametrized query
string sql = 
  @"SELECT pt_name,
           pt_date,
           pt_aid,
           pt_phone 
      FROM Patients
     WHERE pt_ptr = @pt_ptr";

//DONE: wrap IDisposable in using
using (var cmd = new SqlCommand(sql, con)) {
  //TODO: cmd.Parameters.Add("@pt_ptr", AcPtPtrDd.Text, Rdbms_Type_Here);
  // (explicit add) is a better implementation 
  cmd.Parameters.AddWithValue("@pt_ptr", AcPtPtrDd.Text);

  using (var dr = cmd.ExecuteReader()) {
    //DONE: we read at most one record only; no need in while 
    if (dr.Read()) {
      AcPtNameLbl.Text   = Convert.ToString(dr["pt_name"]);
      AcPtRgDateLbl.Text = Convert.ToDateTime(dr["pt_date"]).ToString("dd/MMM/yyyy");
      AcPtAidLbl.Text    = Convert.ToString(dr["pt_aid"]);
      AcPtPhonLbl.Text   = Convert.ToString(dr["pt_phone"]);
    }
    else {
      //DONE: what if we have an empty cursor?  
      AcPtNameLbl.Text   = "";
      AcPtRgDateLbl.Text = "";
      AcPtAidLbl.Text    = "-";
      AcPtPhonLbl.Text   = "";
    }

    AcPtAidTxt.Enabled = AcPtAidLbl.Text != "-";
  }   
} 

0
投票

请试试这个

string idn1 = dr["pt_date"].ToString("dd/MMM/yyyy");
© www.soinside.com 2019 - 2024. All rights reserved.