【问题标题】:MVVM - Add one Column Dynamically in RadGridViewMVVM - 在 RadGridView 中动态添加一列
【发布时间】:2015-01-27 16:04:37
【问题描述】:

我的应用程序在 MVVM 中。我有一个 Telerik RadGridview,其中 2 列是数据绑定的,我必须使用 RowNumbers 动态生成第三列。 这是我的代码。我在第三个(动态生成的)列中得到(集合)。其他2列很好。请帮助我。

XAML:

  < telerik: RadGridView Name = "TestGridView"
ItemsSource = "{Binding TestListView}"
AutoGenerateColumns = "False" >
  < telerik: RadGridView.Columns >
  < telerik: GridViewColumn Header = "RowCount" >
  < telerik: GridViewColumn.CellTemplate >
  < DataTemplate >
  < StackPanel >
  < TextBlock Text = "{Binding TestRowNumber}" / >
  < /StackPanel>
                                     </DataTemplate >
  < /telerik:GridViewColumn.CellTemplate>
                             </telerik: GridViewColumn >
  < telerik: GridViewDataColumn DataMemberBinding = "{Binding FirstName}"
Header = " Name" / >
  < telerik: GridViewDataColumn DataMemberBinding = "{Binding Salary}"
Header = "Salary" / >
  < /telerik:RadGridView.Columns>
  </telerik: RadGridView >

  ViewModel:

  public void Testupdate() {
    RadObservableCollection < int > rno = new RadObservableCollection < int > ();
    for (int i = 1; i <= TestList.Count; i++) {
      rno.Add(i);
    }
    TestRowNumber = rno;
  }

private RadObservableCollection < int > _testRowNumber;
public RadObservableCollection < int > TestRowNumber {
  get {
    return _testRowNumber;
  }
  set {
    _testRowNumber = value;

    OnPropertyChanged();
  }
}
     }

它在 rno 中显示正确的计数,项目 1 到 6。但是当在网格上显示时,它的显示(集合)。我无法追踪我哪里出错了。请纠正我。

谢谢。

【问题讨论】:

    标签: wpf mvvm telerik radgridview


    【解决方案1】:

    名为 TestRowNumber 的属性定义为 RadObservableCollection&lt;int&gt; 根据您的代码,此集合绑定到 TestBlock 的“文本”属性。在绑定集合的 ToString() 方法被调用并且你得到你所看到的。假设 FirstName 和 Salary 是 Employee 类的属性,您可以执行以下操作:

    class Employee
    {
        public int Index { get; set; }
        public string Name { get; set; }
        public double Salary { get; set; }
    }
    
    class ViewModel
    {
        private int imployeeIndex = 1;
        public ObservableCollection<Employee> Employees { get; private set; }
    
        public ViewModel()
        {
            Employees = new ObservableCollection<Employee>();
            for (int i = 0; i < 10; i++)
                AddNewEmployee("Name" + i, i * 1000);
        }
    
        public void AddNewEmployee(string name, double salary)
        {
            Employees.Add(new Employee { Index = imployeeIndex++, Name = name, Salary = salary });
        }
    }
    
    <telerik:RadGridView ItemsSource= "{Binding Employees}" AutoGenerateColumns = "False" >
        <telerik:RadGridView.DataContext>
              <local:ViewModel/>
        </telerik:RadGridView.DataContext>
        <telerik:RadGridView.Columns>
            <telerik:GridViewColumn Header = "RowCount" >
                <telerik:GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text = "{Binding Index}" />
                    </DataTemplate >
                </telerik:GridViewColumn.CellTemplate>
            </telerik:GridViewColumn >
            <telerik:GridViewDataColumn DataMemberBinding = "{Binding Name}" Header = "Name" />
            <telerik:GridViewDataColumn DataMemberBinding = "{Binding Salary}" Header = "Salary" />
        </telerik:RadGridView.Columns>
    </telerik:RadGridView>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 2016-11-22
      相关资源
      最近更新 更多