110,538
社区成员
发帖
与我相关
我的任务
分享
private void initalDataSource()
{
try
{
//两个表,tezb和submonth,通过smonth字段关联。
loop: string selectCount = "SELECT count(*) FROM tezb t left join submonth s on t.smonth=s.smonth ......";
string sql = selectCount.Replace("count(*)", "t.rowid,t.stype,t.sjindu,t.smonth,sid,fkid,sleiji,sbyl,sbenjia,sbdjc,sbjc");
int count = Convert.ToInt32(SqliteHelper.ExecuteScalar(sqlconn.conn, selectCount + " and t.stype!=''"));
DataSet ds = new DataSet();
if (count > 0)
ds = SqliteHelper.getDataset(sqlconn.conn, CommandType.Text, sql + " and t.stype!=''", null);
else
ds = SqliteHelper.getDataset(sqlconn.conn, CommandType.Text, sql, null);
if (ds.Tables.Count > 0)
dt = ds.Tables[0];
if (dt.Rows.Count == 0)
{
//有些数据在因为tezb表中没有数据,上面读取不到,在这里补充数据。
string insertTezb = "insert into tezb(sgroup,smonth) select ...." ;
SqliteHelper.ExecuteNonQuety(sqlconn.conn, insertTezb);
exeCount++;
if (exeCount > 3)
{
return ;
}
goto loop;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "读取资料错误");
}
}
private void child_Shown(object sender, EventArgs e)
{
if (dt == null)
{
initalDataSource();//此处调用上面的方法
if (dt == null)
this.Close();
}
//下面是绑定到DataGridView,和给ComboBox初始化值。
databind(dt); //标记1
cb_to.SelectedIndexChanged -= cb_from_SelectedIndexChanged;
cb_from.SelectedIndexChanged -= cb_from_SelectedIndexChanged;
cb_from.Text = dt.Rows[0]["smonth"].ToString();//标记2
cb_to.Text = dt.Rows[dt.Rows.Count-1]["smonth"].ToString();
cb_to.SelectedIndexChanged += cb_from_SelectedIndexChanged;
cb_from.SelectedIndexChanged += cb_from_SelectedIndexChanged;
}
//下面是绑定到DataGridView,和给ComboBox初始化值。
databind(dt); //标记1
cb_to.SelectedIndexChanged -= cb_from_SelectedIndexChanged;
cb_from.SelectedIndexChanged -= cb_from_SelectedIndexChanged;
cb_from.Text = dt.Rows[0]["smonth"].ToString();//标记2
cb_to.Text = dt.Rows[dt.Rows.Count-1]["smonth"].ToString();
cb_to.SelectedIndexChanged += cb_from_SelectedIndexChanged;
cb_from.SelectedIndexChanged += cb_from_SelectedIndexChanged;
这时,dt里面是没有值的。
如果在标记1前面插入如下代码:
while (dt.Rows.Count == 0)
{ }
可正确得到结果。