none
DataSourse的保存问题 RRS feed

  • 问题

  • 我有一个用户控件,里面包含有一个ListBox,所以使用的话必须要传3个参数进去,DataSourse,DataTextField,DataValueField
    后两个是字符串,容易解决,但DataSourse怎样传进去?可能是List<int>,Dictionary<string,string>,或只是自定义的类型List<People>

    原来想就用两个List<string>来接收,这样每次用这个控件都要解析一次数据,反而烦了
    2010年2月16日 6:09

答案

  • 你好!
         如果数据不是很多的情况下,可以在加载这个控件的时候来设置DataSource属性!
         如果数据比较多的话,可以换一些加载策略,比如分页等,最好不要一次性加载所有的数据!
    周雪峰
    2010年2月16日 8:06
    版主
  • 你好 !
         可以在UserControl的代码中添加定义:
    namespace WindowsFormsApplication1
    {
        public partial class UserControl1 : UserControl
        {
            public UserControl1()
            {
                InitializeComponent();
                this.lstbox.DataSource=....
            }
        }
    }

    另外,你也可以给UserControl添加一个DataSource属性,当用户设置这个属性的时候就把这个设置赋值给lstbox的DataSource属性!
    namespace WindowsFormsApplication1
    {
        public partial class UserControl1 : UserControl
        {
            private object dataSource;
            public UserControl1()
            {
                InitializeComponent();
               
               
            }

            public object DataSource
            {
                get
                {
                    return this.lstbox.DataSource;
                }
                set
                {
                    this.lstbox.DataSource = value;
                }
            }
        }
    }
    周雪峰
    • 已标记为答案 ww-air 2010年2月17日 2:11
    2010年2月16日 11:35
    版主

全部回复

  • 你好!
         如果数据不是很多的情况下,可以在加载这个控件的时候来设置DataSource属性!
         如果数据比较多的话,可以换一些加载策略,比如分页等,最好不要一次性加载所有的数据!
    周雪峰
    2010年2月16日 8:06
    版主
  • 打个比方:
    我的用户控件的名字是UserControl,里面的ListBox名字是lstbox
    我在页面里面拖进去一个UserControl1,

    现在我要设置lstbox的DataSource,该如何设置


    明显UserControl1.lstbox.DataSource是没有的

    2010年2月16日 9:30
  • 你好 !
         可以在UserControl的代码中添加定义:
    namespace WindowsFormsApplication1
    {
        public partial class UserControl1 : UserControl
        {
            public UserControl1()
            {
                InitializeComponent();
                this.lstbox.DataSource=....
            }
        }
    }

    另外,你也可以给UserControl添加一个DataSource属性,当用户设置这个属性的时候就把这个设置赋值给lstbox的DataSource属性!
    namespace WindowsFormsApplication1
    {
        public partial class UserControl1 : UserControl
        {
            private object dataSource;
            public UserControl1()
            {
                InitializeComponent();
               
               
            }

            public object DataSource
            {
                get
                {
                    return this.lstbox.DataSource;
                }
                set
                {
                    this.lstbox.DataSource = value;
                }
            }
        }
    }
    周雪峰
    • 已标记为答案 ww-air 2010年2月17日 2:11
    2010年2月16日 11:35
    版主