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

原文地址:https://www.cnblogs.com/meimao5211/p/3436297.html