每当我在列表框中选择一个项目时,我都会尝试填充文本框但是我遇到了这个错误

时间:2016-09-01 00:10:28

标签: c# sql-server listbox

我一直收到错误

  

多部分标识符" System.Data.DataRowView"无法找到。

我有这些代码

private void lbProduct_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            dtbProduct = dc.getDataTable(string.Format("SELECT P.product_id, P.product_name, P.product_price, T.[type_name], T.[type_fee], T.[type_id] FROM Product P INNER JOIN [Product Type] T ON P.[type_id] = T.[type_id] WHERE product_name = {0}", lbProduct.SelectedItem.ToString()));
            for (int i = 0; i < dtbProduct.Rows.Count; i++)
            {
                //P.TypeName = dtbProduct.Rows[i]["type_name"].ToString();
                txtPrice.Text = dtbProduct.Rows[i]["product_price"].ToString();
                txtProductName.Text = dtbProduct.Rows[i]["product_name"].ToString();
            }

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

...

public DataTable getDataTable(string query)
    {
        con.Open();
        DataTable dt = new DataTable();
        SqlDataAdapter sda = new SqlDataAdapter(query, con);
        sda.Fill(dt);
        con.Close();

        return dt;
    }

1 个答案:

答案 0 :(得分:0)

你的dtbProduct.Rows为null,当你尝试迭代它时它会爆炸...没有对空对象的计数。在任何情况下,我都相当确定至少有一个问题是您应该使用bProduct。 SelectedValue 而不是bProduct。 SelectedItem