使用后面的代码将数据绑定到ComboBox

时间:2012-04-28 14:12:21

标签: c# wpf xaml data-binding wpf-controls

我需要帮助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; }
    }
}
}

但是当我执行我的项目时,数据不会出现在我的组合框中,它只显示没有。的行。 有什么不对吗?我的代码,请问任何想法?

1 个答案:

答案 0 :(得分:0)

你的组合框有DisplayMemberPath =“EmpArbName”和SelectedValuePath =“EmpID”但你的CapClass没有这个名字的属性。

我将尝试将该属性更改为CapID和CapNme,或直接绑定到数据表。

cmbCapsNme.ItemsSource = ds.Tables[0];
相关问题