Как связать DataGridView из базы данных после выбора значения из поля со списком

Я создаю форму Windows на С#. У меня есть DataGridView, все, что мне нужно, чтобы привязать это представление сетки к базе данных с предложением where, и значение которого будет равно выбранному элементу списка.

Я сделал что-то вроде этого:

      private void combsalesid_SelectedIndexChanged(object sender, EventArgs e)
    {
        SqlCommand cmr = DataConnection.GetConnection().CreateCommand();
        cmr.CommandText = "select * from SalesOrder where SalesId = @salesis";
        cmr.Parameters.Add(new SqlParameter("@salesis", combsalesid.SelectedItem.ToString()));
        SqlDataAdapter da = new SqlDataAdapter(cmr);
        DataSet ds = new DataSet();
        da.Fill(ds);
        grdsalesorder.DataSource = ds;

        cmr.Dispose();
        DataConnection.CloseConnection();
    }

Но это не работает.


person Community    schedule 20.08.2013    source источник
comment
grdsalesorder.DataSource = ds.Tables(0); попробуйте этот код, может это ваша проблема, я думаю   -  person senthilkumar2185    schedule 20.08.2013


Ответы (1)


  • Каково значение combsalesid.SelectedItem.ToString()?

    Я предполагаю, что combsalesid привязан к Datatable, поэтому Selecteditem.ToString() возвращает объект-контейнер (System.Data.DataRowView).

    Если да, вам просто нужно преобразовать SelectedItem в DataRowView, чтобы получить значение из этого DataRowView.

    Взгляните на этот пост, выбранный элемент списка дает мне System.Data.DataRowView , C# winforms. Это относится к ListBox, но это та же проблема.

  • Затем, когда вы назначаете Dataset в качестве источника данных для вашего DataGridvView, вам также необходимо установить свойство DataMember, которое будет именем DataTable. Другой способ — передать DataTable в качестве источника данных.

    grdsalesorder.DataSource = ds.Tables(0);  
    
person Chris    schedule 20.08.2013
comment
combsalesid — это поле со списком, которое также привязывается к базе данных через DataReader. - person ; 20.08.2013