2012-04-28 60 views
1

我需要幫助PLZ,我只是想以一個簡單的組合框綁定到從SQL數據庫,其中包含此數據表:數據綁定到一個組合框使用代碼後面

EmployeesTbl: 
------------- 
EmpID EmpName JobID HireDate  Deleted 
1  Tom  1  12/4/2005 false 
2  steve  1  5/5/2005  false 
3  Maria  2  2/8/2010  false 
<Window x:Class="TestGlassButton.Window4" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Window4" Height="300" Width="300"> 
     <Grid> 
     <ComboBox Height="23" HorizontalAlignment="Left" Margin="54,213,0,0" 
        Name="cmbCapsNme" VerticalAlignment="Top" Width="132" 
        ItemsSource="{Binding}" 
        DisplayMemberPath="EmpArbName" 
        SelectedValuePath="EmpID"/> 
     </Grid> 
</Window> 
namespace TestGlassButton 
{ 

public partial class Window4 : Window 
{ 
    public DataSet SelAllCaps() 
    { 
     SqlConnection SqlCon = new SqlConnection("Data Source=.;Initial Catalog=Rest;User ID=m*201m;Password=12345"); 
     // captains names & ID 
     SqlCommand SqlCmdAllCaps = new SqlCommand(); 
     SqlCmdAllCaps.Connection = SqlCon; 
     SqlCmdAllCaps.CommandType = CommandType.Text; 
     SqlCmdAllCaps.CommandText = "select EmpID ,EmpArbName from dbo.EmployeesTbl where JobID = 3 order by EmpArbName"; 
     SqlCon.Open(); 
     SqlDataAdapter dapAllCaps = new SqlDataAdapter(); 
     dapAllCaps.SelectCommand = SqlCmdAllCaps; 
     DataSet dsAllEmpsInfo = new DataSet(); 
     dapAllCaps.Fill(dsAllEmpsInfo, "EmployeesTbl"); 
     SqlCon.Close(); 
     return dsAllEmpsInfo; 
    } 

    private void BindCaps() 
    { 

     DataSet ds = SelAllCaps(); 
     List<CapsClass> capList = new List<CapsClass>(); 
     for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 
     { 
      capList.Add(new CapsClass(Convert.ToInt32(ds.Tables[0].Rows[i]["EmpID"]), 
       ds.Tables[0].Rows[i]["EmpArbName"].ToString())); 
     } 
     ds = null; 
     cmbCapsNme.ItemsSource = capList; 
     cmbCapsNme.DisplayMemberPath = "EmpArbName"; 
     cmbCapsNme.SelectedValuePath = "EmpID"; 
     cmbCapsNme.SelectedIndex = -1; 
    } 

    public Window4() 
    { 
     InitializeComponent(); 
     BindCaps(); 
    } 
} 
class CapsClass 
{ 
    Int32 _capID=-1; 
    string _capNme; 

    public CapsClass(Int32 CapID, String CapNme) 
    { 
     this._capID = CapID; 
     this._capNme = CapNme; 
    } 

    public Int32 CapID 
    { 
     get { return _capID; } 
     set { _capID = value; } 
    } 

    public string CapNme 
    { 
     get { return _capNme; } 
     set { _capNme = value; } 
    } 
} 
} 

但是當我執行我的項目時,數據沒有出現在我的組合框中,它只顯示no。的行。 我的代碼有沒有問題&,有什麼想法嗎?

回答

0

您的組合框的DisplayMemberPath =「EmpArbName」和SelectedValuePath =「EmpID」,但您的CapClass沒有這個名稱的屬性。

我會嘗試將該屬性更改爲CapID和CapNme,或直接綁定到數據表。

cmbCapsNme.ItemsSource = ds.Tables[0]; 
+0

非常感謝史蒂夫,我改變DisplayMemberPath =「EmpArbName」和SelectedValuePath =「EmpID」,現在它工作 – 2012-04-28 14:44:33