大家好,提前谢谢你们!!对于任何和所有帮助,我都是编码和编程的绝对新手(4-5 个月)
我正在使用 Visual Studio 2012 并在 C# 中编码
我正在制作一个连接到 SQL Server 管理工作室中的数据库的 Windows 窗体应用程序
基本上我有两个组合框,需要在启动时填充来自数据库的数据。
我创建了一种填充组合框的方法,并且程序可以 100% 工作,这些框在启动时确实填充,没有丢失任何数据,所有行都显示在组合框中,并且一切都完全按照它应该做的事情以及它应该做的时间做做...
然而!
每次我运行我的程序时,我都会收到此消息 5 次(因为生成消息的代码使用了 5 次)
System.IndexOutOfRangeException:There is no row at position 0
at System.Data.RBTree1.GetNodeByIndex(Int32 userIndex)
at System.Data.DataRowCollection.get_Item(Int32 index)
在实际程序启动并正常运行之前。???(它让我发疯!!)这是我所有的相关代码
下面的代码来自我的实际表单,你可以看到我正在使用 update_combobox(); 在 initalizeComponent 部分中
让它在启动时填充
namespace DB_Program
{
public partial class Form1 : Form
{
DataClass dc = new DataClass();
public Form1()
{
Thread t = new Thread(new ThreadStart(SplashScreen));
t.Start();
Thread.Sleep(5000);
InitializeComponent();
t.Abort();
update_ComboBox();
}
这是我的表单中的代码,这使得它成为可能
private void update_ComboBox()
{
DataSet pList = dc.PListPop();
cboBoxPList.DataSource = pList.Tables[0];
cboBoxPList.DisplayMember = "PName";
cboBoxPList.ValueMember = "PName";
DataSet devList = dl.DevListPop();
cboBoxDev.DataSource = devList.Tables[0];
cboBoxDev.DisplayMember = "LName";
cboBoxDev.ValueMember = "LName";
}
public String getDate(String pName)
{
String date = null;
DataTable dTable = new DataTable();
try
{
conn.Open();
SqlDataAdapter sda = new SqlDataAdapter("SelPro", conn);
sda.SelectCommand.CommandType = CommandType.StoredProcedure;
sda.SelectCommand.Parameters.Add("@PName", SqlDbType.VarChar).Value = pName;
sda.Fill(dTable);
date = dTable.Rows[0]["StartDate"].ToString();
}
catch (Exception GSD)
{
string a = GSD.StackTrace.ToString();
MessageBox.Show(GSD.ToString());
}
finally
{
if (conn != null)
{
conn.Close();
}
}
return date;
}
根据我的消息,这些是生成消息的行,第一条消息与上面的代码直接相关
date = dTable.Rows[0]["StartDate"].ToString();
date = dTable.Rows[0]["PlannedEndDate"].ToString();
FirstName = dTable.Rows[0]["FirstName"].ToString();
Spec = dTable.Rows[0]["Specialty"].ToString();
PID = (int) dTable.Rows[0]["PID"];
请请有人结束我令人沮丧的噩梦!我需要程序按原样保持和运行,我要做的就是我需要做的任何事情,以便程序在不给我这些消息的情况下运行
再次感谢您!