2016-09-10 5 views
0

У меня есть две таблицы в моей базе данных, и они являются компанией и делегатом, а в моей форме счета у меня есть две комбинации, одна для отображения компаний, а другая для отображения делегаты ...Как скомбинировать combobox с помощью другого combobox в C# в зависимости от выбора элемента

Теперь, когда я выбираю компанию в первом поле со списком, вторая группа делегатов должна отображать делегатов, связанных с выбранной компанией. Таблица Company имеет первичный ключ compId и Delegate таблицы имеет внешний ключ compId ...

Я попытался написать код, как эти, но это не дает мне требуемый результат он просто показать все делегат ... любое Помогите!

public PBillFrm() 
{ 
    InitializeComponent(); 

    da = new SqlDataAdapter("select compId, compName from company", cn); 
    da.Fill(dt); 

    PBillCompNamecmbo.DataSource = dt; 
    PBillCompNamecmbo.DisplayMember = "compName"; 
    PBillCompNamecmbo.ValueMember = "compId"; 

    da2 = new SqlDataAdapter("select delId,delName from delegate where compId=" + PBillCompNamecmbo.ValueMember + "", cn); 
    da2.Fill(dt2); 

    pBillDelNamecmbo.DataSource = dt2; 
    pBillDelNamecmbo.DisplayMember = "delName"; 
    pBillDelNamecmbo.ValueMember = "delId";      
} 
+0

Начало здесь: 'где compId = "+ PBillCompNamecmbo.ValueMember' фактически расширяется до' where compId = compId', который всегда является 'true' и не применяет никакой фильтрации. Вы должны привязать параметр con вместо этого нужно указать требуемое значение 'compId'. –

+0

[SQL Injection alert] (http://msdn.microsoft.com/en-us/library/ms161953%28v=sql.105%29.aspx) - вы должны ** не ** объединять свои SQL-запросы - использовать ** параметризованные запросы ** вместо того, чтобы избежать SQL-инъекции –

ответ

0

Подсказка 1: Set AutoPostBack Свойство PBillCompNamecmbo к "ИСТИНА"

Подсказка 2: Переместить следующий код OnChangeFunction из PBillCompNamecmbo

da2 = new SqlDataAdapter("select delId,delName from delegate where [email protected]", cn); 
da2.Fill(dt2); 
pBillDelNamecmbo.SelectCommand.Parameters.AddWithValue("@Id", Convert.ToInt32(PBillCompNamecmbo.ValueMember)); 
pBillDelNamecmbo.DataSource = dt2; 
pBillDelNamecmbo.DisplayMember = "delName"; 
pBillDelNamecmbo.ValueMember = "delId";  
+0

Я думаю, что OP использует WinForms, а не WebForms. – sallushan

Смежные вопросы