silverlight中 ComboBox绑定数据库,并获取当前选定值
在silverlight中 用combobox下拉菜单绑定数据库的方法和用DataGrid绑定数据库的方法类似。
page.xaml.cs代码:
//调用获取 企业联系人姓名
ServiceReference1.Class2 qyLXR = new Class2();
ServiceReference1.Service1Client obj_qyl = new Service1Client();
obj_qyl.qylxrCompleted += new EventHandler<qylxrCompletedEventArgs>(obj_qyl_qylxrCompleted);
obj_qyl.qylxrAsync(qyLXR);
}
void obj_qyl_qylxrCompleted(object sender,qylxrCompletedEventArgs e)
{
this.comboBox1.ItemsSource = e.Result;
}
page.xaml代码
<ComboBox Height="23" HorizontalAlignment="Left" Margin="0,150,0,0" Name="comboBox1" VerticalAlignment="Top" Width="159" Grid.Row="4" Grid.Column="1" SelectionChanged="comboBox1_SelectionChanged" DisplayMemberPath="Name" > </ComboBox>
DisplayMemberPath="Name" //Name为自定义的实体类中要绑定的属性名称
至此,silverlight中ComboBox绑定数据库已完成,下面将是获取选中值
page.xaml.cs代码
private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Qiyelianxiren ql = comboBox1.SelectedItem as Qiyelianxiren;//实体类 ql=comboBox1.SelectedItem as 实体类---获取combobox选定值
MessageBox.Show(ql.Name.Trim());//显示选中值
/*如果需要把选中值传给其他页,则可以这么写:
Qiyelianxiren ql = comboBox1.SelectedItem as Qiyelianxiren;
cs.Name = ql.Name.Trim();*/
}
silverlight中Combobox获取值完成
后记:
之前在完成这个功能时,主要遇到了两个问题:
1、combobox无法绑定数据库,原因是数据绑定错误。之前WCF服务调用失败,是因为数据调用列出现了问题
例如: public List<Qiyelianxiren> qylxr()
{
List<Qiyelianxiren> qyLXR = new List<Qiyelianxiren>();
//SqlConnection objConnection = new SqlConnection(str);
//objConnection.Open();
//SqlCommand objCommand = new SqlCommand("select 姓名 from 企业联系人",objConnection);
//objCommand.CommandType = CommandType.Text;
//DataSet ObjDataset = new DataSet();
//SqlDataAdapter objAdapater = new SqlDataAdapter(objCommand);
SqlConnection objConnection = new SqlConnection(str);
DataSet ObjDataset = new DataSet();
SqlDataAdapter objAdapater = new SqlDataAdapter();
SqlCommand objCommand = new SqlCommand("select 姓名 from 企业联系人");
objConnection.ConnectionString = str;
objConnection.Open();
objCommand.Connection = objConnection;
objAdapater.SelectCommand = objCommand;
objAdapater.Fill(ObjDataset);
for (int i = 0; i < ObjDataset.Tables[0].Rows.Count; i++)
{
Qiyelianxiren a = new Qiyelianxiren();
a.Name = ObjDataset.Tables[0].Rows[i][0].ToString();
qyLXR.Add(a);
}
objConnection.Close();
return qyLXR;
}把 a.Name = ObjDataset.Tables[0].Rows[i][0].ToString();写成了 a.Name = ObjDataset.Tables[0].Rows[i][1].ToString();
查询结果中只有一列值,所以应为[i][0],没有[i][1]这个位置。
2、无法获取选中值。主要问题是获取的值不是选中的值,而是选中的值所在的命名空间。原因是实体类写错了
例如:Qiyelianxiren ql = comboBox1.SelectedItem as Qiyelianxiren;被写成了
combobcox cb=comboBox1.SelectedItem as ComboBox;
在网上查询过类获取值的问题,基本上都是类似的
诸如
selectedvalue
SelectedIndex等貌似获取的都不是选中值,我并没有具体去研究,随着学习的深入,应该会清楚他们的用法的。