silverlight中 ComboBox绑定数据库,并获取当前选定值

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等貌似获取的都不是选中值,我并没有具体去研究,随着学习的深入,应该会清楚他们的用法的。

上一篇:[转] hive0.14-insert、update、delete操作测试


下一篇:通过代码设置button中文字的对齐方式