【发布时间】:2017-02-23 09:33:18
【问题描述】:
我有一个使用下面给出的代码填充数据网格视图的函数。它基本上显示了在给定时间段和日期最多 7 天(周日至周六)安排的患者列表。
datagridview 在我的机器上无论是发布版还是调试版都可以正常显示。我还尝试发布应用程序并将其安装在同一台机器上,完全没有问题。
不幸的是,当同一个应用程序发布并安装在不同的机器上时,datagridview 不显示任何数据。同一个应用程序还显示患者列表和其他详细信息的其他数据网格视图,它们都显示得很好。
我在这里阅读了很多线程并且一直在摆弄代码,但到目前为止,我还没有找到任何解决方案。代码有问题还是我不知道的某种设置有问题?
任何帮助或意见将不胜感激。
编辑:我已更新代码以提供更多详细信息(以防万一)
SqlConnection c = new SqlConnection(connectionString);
//weeArray simply contains 7 dates, (Sun-Sat)
for (int ctr = 0; ctr < weekArray.Length; ctr++)
{
c.Open();
SqlCommand command = new SqlCommand(null, c);
command.CommandText = @"Reealy long sql that I'm sure isn't causing the issue";
command.Parameters.Add("@scheduleDate", SqlDbType.Date).Value = weekArray[ctr];
command.Parameters.Add("@scheduleStaff_ID", SqlDbType.Int).Value = comboBox2.SelectedValue;
command.Prepare();
command.ExecuteReader();
SqlDataAdapter a = new SqlDataAdapter(command);
c.Close();
DataTable dt = new DataTable();
a.Fill(dt);
if (ctr == 0)
{
dataGridView2.DataSource = dt;
if (weekArray[ctr].Equals(DateTime.Now.ToString("MM-dd-yyyy")))
dataGridView2.Columns["patient"].DefaultCellStyle.BackColor = Color.FromArgb(255, 255, 192);
else
dataGridView2.Columns["patient"].DefaultCellStyle.BackColor = Color.FromArgb(230, 255, 255);
}
else if (ctr == 1)
{
dataGridView3.DataSource = dt;
if (weekArray[ctr].Equals(DateTime.Now.ToString("MM-dd-yyyy")))
dataGridView3.Columns["patient"].DefaultCellStyle.BackColor = Color.FromArgb(255, 255, 192);
else
dataGridView3.Columns["patient"].DefaultCellStyle.BackColor = Color.FromArgb(255, 255, 255);
}
else if (ctr == 2)
{
dataGridView4.DataSource = dt;
if (weekArray[ctr].Equals(DateTime.Now.ToString("MM-dd-yyyy")))
dataGridView4.Columns["patient"].DefaultCellStyle.BackColor = Color.FromArgb(255, 255, 192);
else
dataGridView4.Columns["patient"].DefaultCellStyle.BackColor = Color.FromArgb(255, 255, 255);
}
else if (ctr == 3)
{
dataGridView5.DataSource = dt;
if (weekArray[ctr].Equals(DateTime.Now.ToString("MM-dd-yyyy")))
dataGridView5.Columns["patient"].DefaultCellStyle.BackColor = Color.FromArgb(255, 255, 192);
else
dataGridView5.Columns["patient"].DefaultCellStyle.BackColor = Color.FromArgb(255, 255, 255);
}
else if (ctr == 4)
{
dataGridView6.DataSource = dt;
if (weekArray[ctr].Equals(DateTime.Now.ToString("MM-dd-yyyy")))
dataGridView6.Columns["patient"].DefaultCellStyle.BackColor = Color.FromArgb(255, 255, 192);
else
dataGridView6.Columns["patient"].DefaultCellStyle.BackColor = Color.FromArgb(255, 255, 255);
}
else if (ctr == 5)
{
dataGridView7.DataSource = dt;
if (weekArray[ctr].Equals(DateTime.Now.ToString("MM-dd-yyyy")))
dataGridView7.Columns["patient"].DefaultCellStyle.BackColor = Color.FromArgb(255, 255, 192);
else
dataGridView7.Columns["patient"].DefaultCellStyle.BackColor = Color.FromArgb(255, 255, 255);
}
else if (ctr == 6)
{
dataGridView8.DataSource = dt;
if (weekArray[ctr].Equals(DateTime.Now.ToString("MM-dd-yyyy")))
dataGridView8.Columns["patient"].DefaultCellStyle.BackColor = Color.FromArgb(255, 255, 192);
else
dataGridView8.Columns["patient"].DefaultCellStyle.BackColor = Color.FromArgb(255, 255, 255);
}
}
【问题讨论】:
-
你试过调试代码吗? dt 是否填充?
-
数据表已填满,在我的机器上一切正常。唯一的问题是当我尝试在另一台机器上运行它时。我也很确定问题不在于数据库位置,因为它填充了所有其他数据网格视图并加载了所有需要的组合框而没有问题
-
那么,在什么情况下有问题呢?如果其他人在工作
-
@Squishablez,您输入的代码不足以确定问题所在。即使这样,我也怀疑您的机器和另一台机器上的区域设置可能不同,这会导致日期比较失败,从而导致意外的应用程序流,最后 datagridview 什么也没有显示。
-
您需要在另一台机器上调试或写出显示状态的日志,例如DataTable 行数等。我们也无能为力。
标签: c# winforms visual-studio datagridview