我想使用label组件遍历从查询中获得的一些数据。
下面是我获取数据并读取数据的代码:
private void populatelblDesc()
{
conn.Open();
string query;
query = "select de.emp_username, poc.order_no , poc.company_id_no from dc_emp de, purch_order_carton poc";
OracleCommand cmd = new OracleCommand(query, conn);
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
lblDesc.Text = dr["emp_username"].ToString();
}
dr.Close();
conn.Close();
}该查询将返回:
**EMP_USERNAME** **ORDER_NO** **COMPANY_ID_NO**
Werner 1 1
Chris 2 1
Mike 1 2
Marc 3 1现在,我想使用“下一步”按钮浏览数据。查询中的每个单独列必须显示在单独的标签中。因此在加载时,第一个标签将显示“Werner”,第二个标签"1",3d标签"1“。点击next将在第一个标签中显示"Chris“,第二个标签”2“和3d标签"1”再次点击next将显示"Mike“等
有没有人能帮我一下?
发布于 2012-12-06 18:37:00
将您的值保存在列表中的某个位置:
List<String> LabelTextList = new List<String>();
private void populatelblDesc()
{
conn.Open();
query = "select emp_username from dc_emp";
OracleCommand cmd = new OracleCommand(query, conn);
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
this.LabelTextList.add(dr["emp_username"].ToString());
}
dr.Close();
conn.Close();
}然后使用一个整数值,从0开始,并通过单击下一步/上一步增加/减少它
int i = 0;
public void next(){
if (i+1 < this.LabelTextList.Count())
lblText.text = this.LabelTextList[++i];
}
public void prev(){
if (i-1 >= 0)
lblText.text = this.LabelTextList[--i];
}如果小于0或大于列表大小,则添加一些验证,这样就完成了。
发布于 2012-12-06 18:21:27
将BindingSource与DataTable和DataBindings结合使用。
或者在窗体上放置一个并将bs.DataSource设置为表,或者动态创建一个。
var table = new DataTable();
table.Load(reader);
var bs = new BindingSource(table, null);
lblDesc.DataBindings.Add("Text", bs, "emp_username"),
btnNext.Click += ()
{
bs.MoveNext();
};
btnPrev.Click += ()
{
bs.MovePrevious();
};您甚至可以在表单上放置一个BindingNavigator并将bindingNavigator1.BindingSource设置为您的BindingSource。它将管理First/Previous/Next/Last逻辑,而不需要一行代码。
https://stackoverflow.com/questions/13741359
复制相似问题