如何修复“位置1没有行”

时间:2019-04-24 15:25:54

标签: c# wpf datagridview datagrid wpfdatagrid

我从数据库安排数据并将其提取到datagrid,我尝试自定义列和行以显示所需的数据,通过循环,我尝试从datatable之一中匹配数据以获取另一个数据进行填充进入数据网格,不幸的是,我不断收到“位置1错误处没有行”。我已附加附件以说明我面临的问题。 Two Illustrations Codes

我已经阅读了stackoverflow中的一些帖子来解决问题,我找不到问题。 1. Error There is no row at position 1 2. there is no row at position 1

    private void generate_view1(DataTable search_data1)
    {
        DataTable sample_data1 = new DataTable();
        sample_data1 = search_data1.Copy();
        sample_data1.Columns.Add("Item_Number");
        sample_data1.Columns.Add("Min_Tolerance");
        sample_data1.Columns.Add("Max_Tolerance");


        var database_select = new DatabaseSelect();
        string OrderNo = Order_NO.Text.ToString();
        DataTable result_data = new DataTable();
        result_data = database_select.LoadTable_DOHEAD(OrderNo);

        string SalesNO = result_data.Rows[0]["EAORNO"].ToString();
        string Del_index = result_data.Rows[0]["EADLIX"].ToString();

        var database_select1 = new DatabaseSelect();
        DataTable result_weight = new DataTable();
        result_weight = database_select.LoadTable_MITTRA(SalesNO, Del_index);


        dataGrid1.ItemsSource = null;
        dataGrid1.ItemsSource = sample_data1.DefaultView;
        DataGridTextColumn Weight1 = new DataGridTextColumn();
        dataGrid1.DisplayMemberPath = sample_data1.Columns["MTTRQT"].ToString();

        Decimal sum = Convert.ToDecimal(sample_data1.Compute("SUM(MTTRQT)", string.Empty));

        Weight.Text = (sum * -1).ToString(); 
         //******Problems occur in below this part*********//
        for (int i = 0; i < sample_data1.Rows.Count; i++)
        {
            string itemcode = sample_data1.Rows[i]["MTITNO"].ToString();
            String ItemNumber = result_weight.Rows[i]["MTITNO"].ToString();

            if (itemcode != " ")
            {
                sample_data1.Rows[i]["Item_Number"] = result_weight.Rows[i]["MTITNO"].ToString();

                var database_select2 = new DatabaseSelect();

                DataTable result_tolerance = new DataTable();
                result_tolerance = database_select.LoadUser_Tolerance(ItemNumber); //** i've include my loadUser Tolerance query in here as well***//
                sample_data1.Rows[i]["Min_Tolerance"] = result_tolerance.Rows[i]["Min_Tol"].ToString();     //*** this is the line where i face the problems***//
                string MINTOL = result_tolerance.Rows[i]["Min_Tol"].ToString();    //*** i've put in this to illustrate the problems**//
                MessageBox.Show(MINTOL);    //*** i've put in this to illustrate the problems**//

            }

        }

更新的附加信息(25/4/2019)
LoadUser_Tolerance变量查询(我试图从此查询中选择最小公差以将其插入到我的数据网格中) 对于所需的结果(您可以参考上面的插图),只有在尝试使MinTolerance显示在DataGrid中时,我才会遇到此问题。我不知道该怎么做。

    public DataTable LoadUser_Tolerance(string ItemNO)
    {
        OdbcConnection conn = new OdbcConnection();
        conn.ConnectionString = ConString;
        conn.Open();
        CmdString = "SELECT Item_NO, Min_Tol, Max_Tol FROM MasTolerance where Item_NO ='" + ItemNO + "'";
        OdbcCommand cmd = new OdbcCommand(CmdString, conn);
        OdbcDataAdapter sda = new OdbcDataAdapter(cmd);
        DataTable dt = new DataTable("MasTolerance");
        sda.Fill(dt);
        return dt;
    }

尝试的调试尝试。

       if (result_tolerance.Rows.Count > i)
       {
         sample_data1.Rows[i]["Min_Tolerance"] = result_tolerance.Rows[i]["Min_Tol"].ToString();
         string MINTOL = result_tolerance.Rows[i]["Min_Tol"].ToString();
         MessageBox.Show(MINTOL + i);
       }
       else
       {
           MessageBox.Show("Error"); //** i can display the Item number in row 1, but Min tolerance for the Row 1 can't be display**//

       }

很抱歉让整个过程这么长,但是我别无选择。

0 个答案:

没有答案