【问题标题】:filling a column of data grid using another column使用另一列填充一列数据网格
【发布时间】:2014-12-29 09:45:42
【问题描述】:

我将在 C# windows 窗体中创建一个表。此表必须列日期:公历日期和波斯日期。 公历日期列由 SQL 数据库中的存储过程填充。 我有以下函数将公历日期转换为波斯日期:

public string miladitoshamsi(DateTime _date)
{
PersianCalendar pc = new PersianCalendar();
StringBuilder sb = new StringBuilder();
sb.Append(pc.GetYear(_date).ToString("00"));
sb.Append("-");
sb.Append(pc.GetMonth(_date).ToString("00"));
sb.Append("-");
sb.Append(pc.GetDayOfMonth(_date).ToString("00"));
return sb.ToString();
}

我正在表单加载事件中尝试使用此代码来填充波斯日期列。但它还为空。

        for (int i = 0; i < Grd.RowCount-1 ; i++)
        {
            DateTime bdate = Convert.ToDateTime(Grd.Rows[i].Cells["GregorianDate"].Value);
            string s = miladitoshamsi(bdate).ToString();
            Grd.Rows[i].Cells[0].Value = s.ToString();
            //MessageBox.Show(s);
        }

当我使用消息框时,它将返回正确的波斯日期。但它不能填充数据网格波斯日期列。

【问题讨论】:

  • Persion Date 列是字符串类型的吗?
  • 它的列类型正是“DataGridViewTextBoxColumn”。
  • 您是否在 Form_Load 事件处理程序中放置了一个断点,以确保 (1) 它被调用,(2) Grd.RowCount 不为零?
  • 不是断点。但我通过消息框对其进行了测试。通过消息框可以。如果可能的话,你可以通过团队 wiewer 连接到我的电脑。

标签: c# winforms visual-studio-2012 datagridview


【解决方案1】:

Grd.Rows[i].Cells[0].Valueint,而不是 Date

你的意思是Grd.Rows[i].Cells[2].Value

【讨论】:

  • 数据网格视图的 RightToLeft 属性为 True。所以 Cells[0] 是正确的。
  • 你真的需要在你的问题中提到这样的事情。
  • 另外,如果你的 miladitoshamsi 函数返回一个字符串,你为什么要再次将其转换为字符串,然后在最后一行再次将该值转换为字符串?
  • 感谢您的帮助。但我认为 Tosting() 在这里无效。
  • 这就是我的意思。
【解决方案2】:

将 PersianDate 列的公式表达式属性设置为“[GregorianDate]”。 这将自动填充所有值。

【讨论】:

  • 你能解释一下吗?我找不到这个属性
  • DataTable.Columns["PersianDate"].Expression="[GregorianDate]";
猜你喜欢
  • 2016-09-30
  • 2021-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多