Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用标签组件C循环遍历数据_C#_Visual Studio - Fatal编程技术网

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,则需要固定边界。让它发挥作用。我又补充了一个问题请阅读。