none
dataform里ComboBox 的SelectedIndex的问题 RRS feed

  • 问题

  • dataform里ComboBox 的SelectedIndex的问题:

    cb.SelectedIndex = 0;//这里设定后,后面不管ComboBox 的SelectionChanged事件如何变化,cb.SelectedIndex始终等于0,请问这里如何修改呢?

     

    前台:       
    <toolkit:DataForm HorizontalAlignment="Left" Name="dataForm1" VerticalAlignment="Top" Height="161" Width="378" ContentLoaded="dataForm1_ContentLoaded">
    <toolkit:DataForm.EditTemplate>
    <DataTemplate>
    <StackPanel>
    <toolkit:DataField Label="事业部名称*">
    <ComboBox Margin="3"  Name="cbUnit" SelectionChanged="cbUnit_SelectionChanged" />
    </toolkit:DataField>
    <toolkit:DataField Label="部门名称*">
    <TextBox Margin="3" Text="{Binding DepartmentName, Mode=TwoWay,NotifyOnValidationError=True,  ValidatesOnExceptions=True }" Name="texDepartmentName" />
    </toolkit:DataField>
    </StackPanel>
    </DataTemplate>
    </toolkit:DataForm.EditTemplate>
    </toolkit:DataForm>

     

    后台:
    namespace TopXinZi.Views
    {
            public partial class Department_add : ChildWindow
            {

                   public Department cw_Department;
                    XinZiDomainContext ds = new XinZiDomainContext();
                    public Department NewDepartment { get; set; }

            public Department_add()
            {
                    InitializeComponent();
                    NewDepartment = new Department();
                    dataForm1.CurrentItem = NewDepartment;
                    dataForm1.BeginEdit();

            }

            private void OKButton_Click(object sender, RoutedEventArgs e)
            {

                    this.DialogResult = true;
    }

            private void CancelButton_Click(object sender, RoutedEventArgs e)
            {

                    this.DialogResult = false;
    }

            // ComboBox控件绑定数据源

    private void dataForm1_ContentLoaded(object sender, DataFormContentLoadEventArgs e)
    {

    ComboBox cb = (ComboBox)(dataForm1.FindNameInContent("cbUnit"));
    cb.ItemsSource = ds.BusinessUnits;
    cb.DisplayMemberPath = "UnitName"
    ds.Load<BusinessUnit>(ds.GetBusinessUnitQuery(), Home_Completed, false);

    }

    void Home_Completed(LoadOperation lo)
    {
    ComboBox cb = (ComboBox)(dataForm1.FindNameInContent("cbUnit"));
    cb.SelectedIndex = 0;//这里设定后,后面不管ComboBox 的SelectionChanged事件如何变化,cb.SelectedIndex始终等于0,请问这里如何修改呢?


    }


            private void cbUnit_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {

                //
            }
    }
    }

    2010年7月14日 2:33

答案

  • 你好,

           比较奇怪,我根据你的代码自己建立了一个测试用例,并没有发生这样的问题。

           我基本完全拷贝了你的代码,除了数据源之外。

           你还有其他地方对这个ComboBox进行操作吗?

           从代码来看,因当只有每次ItemsSource载入完成以后才会设置成0

    • 已标记为答案 xmf16 2010年7月15日 9:21
    2010年7月15日 8:30
  • 你查一下,对selectedindex是不是可能还在其它地方设置了?
    okokwukai
    • 已标记为答案 xmf16 2010年7月15日 9:53
    2010年7月15日 9:12

全部回复

  • 你好,

           比较奇怪,我根据你的代码自己建立了一个测试用例,并没有发生这样的问题。

           我基本完全拷贝了你的代码,除了数据源之外。

           你还有其他地方对这个ComboBox进行操作吗?

           从代码来看,因当只有每次ItemsSource载入完成以后才会设置成0

    • 已标记为答案 xmf16 2010年7月15日 9:21
    2010年7月15日 8:30
  • 你查一下,对selectedindex是不是可能还在其它地方设置了?
    okokwukai
    • 已标记为答案 xmf16 2010年7月15日 9:53
    2010年7月15日 9:12
  • 谢谢二位前辈的指点,发现问题所在了
    2010年7月15日 9:55