C# 使用标签组件C循环遍历数据
我想循环使用标签组件从查询中获取的一些数据 这是我获取数据并读取数据的代码:C# 使用标签组件C循环遍历数据,c#,visual-studio,C#,Visual Studio,我想循环使用标签组件从查询中获取的一些数据 这是我获取数据并读取数据的代码: 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"; OracleC
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。点击下一步将显示Chris在1ste标签中,第二标签2和3d标签1再次点击下一步将显示Mike等
有人能帮我吗?将BindingSource与DataTable和数据绑定结合使用
在表单上删除一个并将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。它将管理第一个/上一个/下一个/最后一个逻辑,无需一行代码。将BindingSource与DataTable和DataBinding结合使用
在表单上删除一个并将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。它将管理第一个/上一个/下一个/最后一个逻辑,无需一行代码。将您的值保存在某个位置的列表中:
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开始,通过单击next/prev增加/减少它
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];
}
如果您得到的值小于或大于列表大小,则添加一些验证,并且您已经完成。将您的值保存在列表中的某个位置:
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开始,通过单击next/prev增加/减少它
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];
}
如果您得到的数据小于或大于列表大小,请添加一些验证,然后完成。在每个dr.Read条件下,您将获得下一条记录。.在每个dr.Read条件下,您将获得下一条记录。.谢谢。这管用!只有两个问题。当我到达最后一个值并再次点击next时,我得到了一个异常:指定的参数超出了有效值的范围。参数名称:index这显然是因为没有更多的数据,但如何修复它?然后是最后一个问题:我有一个不同的表单,我需要做同样的事情,但是需要一个更大的查询。每次我运行它,我都会得到IndexOutOfRange…谢谢,这太完美了。我将对我的整个问题稍加修改。我认为这已经足够了,这会对我有所帮助,但我遇到了其他问题。如果你有时间,请再读一遍我的问题。非常感谢!只需调整解决方案,并使用另外两个计数器,如j和k。然后以相同的方式填充其他标签,从j=1和K=2开始。如果i-1<计数-2,则需要固定边界。让它发挥作用。我又补充了一个问题请阅读。谢谢。这管用!只有两个问题。当我到达最后一个值并再次点击next时,我得到了一个异常:指定的参数超出了有效值的范围。参数名称:index这显然是因为没有更多的数据,但如何修复它?然后是最后一个问题:我有一个不同的表单,我需要做同样的事情,但是需要一个更大的查询。每次我运行它,我都会得到IndexOutOfRange…谢谢,这太完美了。我将对我的整个问题稍加修改。我认为这已经足够了,这会对我有所帮助,但我遇到了其他问题。如果你有时间,请再读一遍我的问题。非常感谢!只需调整解决方案,并使用另外两个计数器,如j和k。然后以相同的方式填充其他标签,从j=1和K=2开始。如果i-1<计数-2,则需要固定边界。让它发挥作用。我又补充了一个问题请阅读。