【问题标题】:silver light datagrid银光数据网格
【发布时间】:2011-04-22 05:14:44
【问题描述】:

我是 Silverlight 的新手,所以我需要您的帮助。我的查询是数据网格的一页,该数据网格只有 6 列。在 6 列之后,它们是一个 scape,因此 scape 显示自己一列。所以我避免 datagrid.scape 中的该列可能在没有列的情况下显示这是我的询问。 对我来说很紧急,请尽早解决。

【问题讨论】:

  • 你的问题不清楚。能改一下吗?
  • 我有一个编译错误:scape 未定义。在不知道您在说什么的情况下,没有人可以回答您的问题。

标签: silverlight datagrid


【解决方案1】:

虽然我不知道“scape”是什么,但您需要先创建一个从 IEditable 和 INotify 继承的“display”类。例如:

using System.ComponentModel;
using System.ComponentModel.DataAnnotations;

namespace Application.Views.DisplayClasses
{
    public class DisplayClass : IEditableObject, INotifyPropertyChanged
    {

       //Create private vars
        private string a;
        private string b;
        private string c;
        private string d;
        private bool e;


        // Create public properties with meta data to tell the grid to display and what order etc
        [Display(AutoGenerateField = false)]
        public string A
        {
            get { return a; }
            set { a = value; }
        }

        [Display(Order = 0, Name = "B", AutoGenerateField = true)]
        public string B
        {
            get { return b; }
            set { b = value; }
        }

        [Display(Order = 1, Name = "C", AutoGenerateField = true)]
        public String C
        {
            get { return c; }
            set { c= value; }
        }

        [Display(Order = 2, Name = "D", AutoGenerateField = true)]
        public string D
        {
            get { return d; }
            set { d = value; }
        }

        [Display(Order = 2, Name = "E", AutoGenerateField = true)]
        public string E
        {
            get { return e; }
            set { e = value; }
        }

        #region IEditableObject Members

        public void BeginEdit()
        {

        }

        public void CancelEdit()
        {

        }

        public void EndEdit()
        {

        }

        #endregion

        #region INotifyPropertyChanged Members

        public event PropertyChangedEventHandler PropertyChanged;

        protected void RaisePropertyChanged(string propertyName)
        {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null))
            {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }

        #endregion
    }
}

然后你需要创建一个 ObservableCollection 来存储你从数据库中返回的数据:

    // Code to get data from the database (from your webservice)

//Make this Observable collection global
public static ObservableCollection<DisplayClass> ItemList = new ObservableCollection<DisplayClass>();

// In your oncompleted event method, put something similar to the following code
foreach (var DatabaseItem in DataFromMyWebService)
{
    DisplayClass GridItem = new DisplayClass();

    GridItem.A = DatabaseItem.A;
    GridItem.B = DatabaseItem.B;
    GridItem.C = DatabaseItem.C;
    GridItem.D = DatabaseItem.D;

    ItemList.Add(GridItem);
}

dgDataGrid.ItemsSource = ItemList;

你想让你的 observable 集合成为全局的,这样如果你需要改变你的集合中的一个项目,数据网格会自动显示这些变化。注意显示类中的元数据 ([])。这就是您控制显示哪些属性和显示顺序的方式。您还需要在 XAML 代码中的 datagrid 元素中设置属性“AutoGenerate="True"'。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-27
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多