当前位置:编程学习 > C#/ASP.NET >>

求教:关于 listView 绑定 及 方法调用问题

求教:关于 listView 绑定 及 方法调用问题

传上偶的代码。

我的问题是:

在 FrmEdit.cs 中调用 FrmList.cs 的 ListBind( ),但却在  FrmList.cs 里的  ListBind( ) 之  lv.Text = emp

[i].ID.ToString (); 中 出现“未将对象引用设置到对象的实例”问题。

求老师大侠,问题是出现在哪里?


拜谢老师大侠先!!!


下面是我的代码:

---------------------

namespace TestListView
{
    public partial class FrmList : Form
    {


       Employee[] emp = new Employee[3];

        void InitData()
        { 
           emp [0]= new Employee ();
           emp[0].ID = 01;
           emp[0].Name = "张三";
           emp[0].Age = 22;

           emp[1] = new Employee();
           emp[1].ID = 02;
           emp[1].Name = "王五";
           emp[1].Age = 28;

           emp[2] = new Employee();
           emp[2].ID = 03;
           emp[2].Name = "李四";
           emp[2].Age = 26;

                   
        }

        public FrmList()
        {
            InitializeComponent();
        }

        private void FrmList_Load(object sender, EventArgs e)
        {
             InitData();
             ListBind();
         }

      

       public  void ListBind( )
        {
            listView1.Items.Clear();
            
            for (int i =0; i<emp.Length ; i++)
            {
                ListViewItem lv = new ListViewItem();
                lv.Text = emp[i].ID.ToString ();  
                //lv.SubItems.Add(emp[i].ID.ToString ());
                lv.SubItems.Add (emp[i].Name );
                lv.SubItems.Add(emp[i].Age.ToString () );
                lv.SubItems.Add(emp[i].Score.ToString ());

                listView1.Items.Add(lv);

            } 
        }

        private void listView1_doubleClick(object sender, EventArgs e)
        {

            FrmEdit edit = new FrmEdit();
            edit.Show ();

        }

    }

}


-------------------------

namespace TestListView
{
    public partial class FrmEdit : Form
    {
        public FrmEdit()
        {
            InitializeComponent();
        }

        private void FrmEdit_Load(object sender, EventArgs e)
        {

        }

       

        private void btnSave_Click(object sender, EventArgs e)
        {
             Employee empList = new Employee ();
             
            empList.ID =Convert.ToInt32(txtID.Text.Trim());
            empList.Name = txtName.Text.Trim();
            empList.Age = Convert.ToInt32 (txtAge.Text.Trim());
            empList.Score = Convert.ToInt32(txtScore.Text.Trim());

            FrmList list = new FrmList();
            list.ListBind( );        
            
        }
    }
}


-----------------------

namespace TestListView
{
   public  class Employee
    {
      public  int ID {get;set; }
      public string Name { get; set; }
      public int Age { get; set; }
      public int Score { get; set; }
       
    }

}
--------------------编程问答--------------------
      private void btnSave_Click(object sender, EventArgs e)
        {
             Employee empList = new Employee ();
             
            empList.ID =Convert.ToInt32(txtID.Text.Trim());
            empList.Name = txtName.Text.Trim();
            empList.Age = Convert.ToInt32 (txtAge.Text.Trim());
            empList.Score = Convert.ToInt32(txtScore.Text.Trim());

            FrmList list = new FrmList();
            list.ListBind( );     //這裡直接調用list.ListBind()並未初始化ListBind()方法里的emp   
            
        }

--------------------编程问答-------------------- 感谢 1楼 wj150158472 的回复!

“未初始化ListBind()方法里的emp”---- 如何初始化呢??

我是刚刚初学的菜鸟,还请您多多指点,谢谢啦!! --------------------编程问答--------------------
引用 2 楼 u011620649 的回复:
感谢 1楼 wj150158472 的回复!

“未初始化ListBind()方法里的emp”---- 如何初始化呢??



我是刚刚初学的菜鸟,还请您多多指点,谢谢啦!!



你指的是下面这段代码吗?:

 public partial class FrmList : Form
    {


       Employee[] emp = new Employee[3];

        void InitData()
        { 
           emp [0]= new Employee ();
           emp[0].ID = 01;
           emp[0].Name = "张三";
           emp[0].Age = 22;

           emp[1] = new Employee();
           emp[1].ID = 02;
           emp[1].Name = "王五";
           emp[1].Age = 28;

           emp[2] = new Employee();
           emp[2].ID = 03;
           emp[2].Name = "李四";
           emp[2].Age = 26;

                   
        }


如果是,上面的代码就在ListBind()方法的上面,也就是在class FrmList 的顶部。

--------------------编程问答-------------------- FrmList list = new FrmList();
            //初始化emp数组中的数据InitData变成公共方法
            list.InitData();
            list.ListBind( );  
或者list.Show();执行FrmList中的Load事件       --------------------编程问答--------------------
引用 4 楼 lww5351568 的回复:
FrmList list = new FrmList();
            //初始化emp数组中的数据InitData变成公共方法
            list.InitData();
            list.ListBind( );  
或者list.Show();执行FrmList中的Load事件      


感谢 lww5351568 的回复和指导!

但现在的问题是:

1.用您的第一个的办法,尝试后,点击“保存”,没有任何反应,也就是说 页面没有反应,原来的listView 也没有发生更新变化。

2.用您的第二个办法,尝试后,点击“保存”,跳出listView页面,但没有发生更新变化,原来的字段值依旧。

咋办呢? --------------------编程问答-------------------- 你是要显示什么内容????FrmEdit 这个界面输入的值吗?但是你根本没有把这些数据传递给那个temp数组里面啊 --------------------编程问答--------------------
引用 6 楼 lww5351568 的回复:
你是要显示什么内容????FrmEdit 这个界面输入的值吗?但是你根本没有把这些数据传递给那个temp数组里面啊


“FrmEdit 这个界面输入的值吗?” ---- 是的,也就是说,把新输入的值保存下来。
比如说,第一行的值,我重新给值,点击“保存”后,第一行的值就变成新输入的值。

您说的“temp数组”是指的"Employee[] emp = new Employee[3];",吗?
如果不是,俺就不懂了。俺是菜鸟新手,还需您帮助指导! --------------------编程问答-------------------- 那就在FrmList写个publice void SetData(Employee emp){
        emp[0]=emp;
} 方法 很简单有很多方法
 然后在保存按钮事件中
private void btnSave_Click(object sender, EventArgs e)
        {
             Employee empList = new Employee ();
             
            empList.ID =Convert.ToInt32(txtID.Text.Trim());
            empList.Name = txtName.Text.Trim();
            empList.Age = Convert.ToInt32 (txtAge.Text.Trim());
            empList.Score = Convert.ToInt32(txtScore.Text.Trim());

            FrmList list = new FrmList();
            list.InitData();
            list.SetData(emplist);
            list.ListBind( );
            list.Show();        
        }
还有去掉FrmList中的Load事件的代码  解决的方法很多 自己多调试一下就明白了

--------------------编程问答-------------------- 非常感谢 lww5351568 的指导帮助!!!

我试试。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,