当项目与数据库中的值不相等时如何取回列表的数据源
How to get back a datasource for a list when an item is not equal value from database
我有一个带按钮的 monthcalendar,当单击一个按钮并且 monthcalendar 中的 selected 日期等于数据库列中的值时,我正在使用数据库中的 listbox.datasource,但是在那之后,当我 select monthcalendar 中的新日期和 selected 日期不等于列值时,我想要返回我使用的列表的第一个数据源。
请注意,我只使用: if(date.Equals("20160322")) 没有 foreach 它工作正常但没有 foreach 循环遍历列
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < defaultList.Length; i++)
{
listBox1.Items.Add(defaultList[i]);
}
string date = monthCalendar1.SelectionStart.Date.ToString("yyyyMMdd");
string connetionString = null;
MySqlConnection connection;
MySqlCommand command;
MySqlDataAdapter adapter = new MySqlDataAdapter();
DataSet ds = new DataSet();
int i = 0;
string sql = null;
connetionString = "datasource=localhost; database=bokning;port=3306;username=root;password=666666";
sql = "select date,dayTime from newsystem where date='" + date + "'";
connection = new MySqlConnection(connetionString);
try
{
connection.Open();
command = new MySqlCommand(sql, connection);
adapter.SelectCommand = command;
adapter.Fill(ds);
adapter.Dispose();
command.Dispose();
connection.Close();
dtDatetime = ds.Tables[0];
foreach (DataRow dr in dtDatetime.Rows)
{
if (date.Equals(dr["date"]))
{
listBox1.DataSource = ds.Tables[0];
listBox1.ValueMember = "date";
listBox1.DisplayMember = "dayTime";
}
else
{
//listBox1.Items.Clear();
listBox1.DataSource = defaultList;
}
}
}
catch (Exception ex)
{
MessageBox.Show("Cannot open connection ! ");
}
}
您的代码:
foreach(dtDatetime.Rows 中的 DataRow dr)
{
如果 (date.Equals(博士["date"]))
{
listBox1.DataSource = ds.Tables[0];
listBox1.ValueMember = "date";
listBox1.DisplayMember = "dayTime";
}
别的
{
listBox1.DataSource = 默认列表;
}<br>
}
如果没有项目,则无法到达 else 语句 - 如果有,所有项目都会匹配日期。这段代码是您的逻辑错误所在
你需要这样的东西
伪代码:if rows.count>0 set datasource to ds.tables[0] else datasource=defaultlist
没有for循环
如果有 100 个项目,则设置 100 次毫无意义
我有一个带按钮的 monthcalendar,当单击一个按钮并且 monthcalendar 中的 selected 日期等于数据库列中的值时,我正在使用数据库中的 listbox.datasource,但是在那之后,当我 select monthcalendar 中的新日期和 selected 日期不等于列值时,我想要返回我使用的列表的第一个数据源。 请注意,我只使用: if(date.Equals("20160322")) 没有 foreach 它工作正常但没有 foreach 循环遍历列
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < defaultList.Length; i++)
{
listBox1.Items.Add(defaultList[i]);
}
string date = monthCalendar1.SelectionStart.Date.ToString("yyyyMMdd");
string connetionString = null;
MySqlConnection connection;
MySqlCommand command;
MySqlDataAdapter adapter = new MySqlDataAdapter();
DataSet ds = new DataSet();
int i = 0;
string sql = null;
connetionString = "datasource=localhost; database=bokning;port=3306;username=root;password=666666";
sql = "select date,dayTime from newsystem where date='" + date + "'";
connection = new MySqlConnection(connetionString);
try
{
connection.Open();
command = new MySqlCommand(sql, connection);
adapter.SelectCommand = command;
adapter.Fill(ds);
adapter.Dispose();
command.Dispose();
connection.Close();
dtDatetime = ds.Tables[0];
foreach (DataRow dr in dtDatetime.Rows)
{
if (date.Equals(dr["date"]))
{
listBox1.DataSource = ds.Tables[0];
listBox1.ValueMember = "date";
listBox1.DisplayMember = "dayTime";
}
else
{
//listBox1.Items.Clear();
listBox1.DataSource = defaultList;
}
}
}
catch (Exception ex)
{
MessageBox.Show("Cannot open connection ! ");
}
}
您的代码:
foreach(dtDatetime.Rows 中的 DataRow dr)
{
如果 (date.Equals(博士["date"]))
{
listBox1.DataSource = ds.Tables[0];
listBox1.ValueMember = "date";
listBox1.DisplayMember = "dayTime";
}
别的
{
listBox1.DataSource = 默认列表;
}<br>
}
如果没有项目,则无法到达 else 语句 - 如果有,所有项目都会匹配日期。这段代码是您的逻辑错误所在
你需要这样的东西
伪代码:if rows.count>0 set datasource to ds.tables[0] else datasource=defaultlist
没有for循环 如果有 100 个项目,则设置 100 次毫无意义