public DataTable checkedInfo;        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                checkedInfo = new DataTable("aaa");
                checkedInfo.Columns.Add("id", System.Type.GetType("System.Int32"));
                checkedInfo.Columns.Add("src", System.Type.GetType("System.String"));
                checkedInfo.Columns.Add("title", System.Type.GetType("System.String"));
                this.BindRepeaterData(2);
            }
        }
//。图片列表加载,略public void CheckBoxChange(object sender, EventArgs e)
        {
            if (((CheckBox)sender).Checked == true)
            {
                Response.Write(checkedInfo.Rows.Count.ToString());
            }
            else
            { 
            
            }
        }
从数据库里面读图片列表,建的datatable存勾选的图片信息,
checkbox勾选事件时,就出现了“未将对象引用设置到对象的实例”错误,有什么办法解决啊?
急,在线等  
      

解决方案 »

  1.   

    建议你设断点跟踪一下 看看
    你的checkedInfo应该是没有值
    checkedInfo.Rows.Count.ToString()
      

  2.   

     Response.Write(checkedInfo.Rows.Count.ToString());
    这句有问题..
     checkedInfo为NULL.类为你进入CheckBoxChange事件前走的Page_Load,里面不会进入取数据的!IsPostBack
    所以在Page_Load走完 checkedInfo就是NULL.
    Null.Rows肯定会报错.
      

  3.   

    checkedInfo里面根本就没有添加Row 只是添加了个表头 当然要报错
      

  4.   

    每有数据!就象sql里查了句"Select * from table where 1=2"
      

  5.   


    恩 是个 有什么解决办法么??把取数据的方法放!IsPostBack外面不合适哈
      

  6.   

    checkedInfo里面的数据是在this.BindRepeaterData(2)里面填充的
      

  7.   

    检查一下checkedInfo里面的数据,绑定时有错误
      

  8.   

    补充问下   
    是因为页面回发时checkedInfo在页面首次加载this.BindRepeaterData(2)里面填充的数据都没有了么 
      

  9.   

    你的checkedInfo 只在页面第一次打开时初始化了,面在页面提交后,你的checkedInfo 并没有初始化,所以会为空
    Response.Write(checkedInfo.Rows.Count.ToString())
    建议用
    checkedInfo = (DataTable)repeater1.DataSource;
    Response.Write(checkedInfo.Rows.Count.ToString())
      

  10.   


    对..没错..你理解的很对..不过可以用ViewState["checkedInfo "]来存..
    下面的试试protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    checkedInfo = new DataTable("aaa");
                    checkedInfo.Columns.Add("id", System.Type.GetType("System.Int32"));
                    checkedInfo.Columns.Add("src", System.Type.GetType("System.String"));
                    checkedInfo.Columns.Add("title", System.Type.GetType("System.String"));
                    ViewState["checkedInfo "]=checkedInfo;
                    this.BindRepeaterData(2);
                }
            }
    public void CheckBoxChange(object sender, EventArgs e)
            {
                if (((CheckBox)sender).Checked == true)
                {
                    if(ViewState["checkedInfo "]=!=null)
                    {
                       checkedInfo = (DataTable)ViewState["checkedInfo "];
                       Response.Write(checkedInfo.Rows.Count.ToString());
                   }
                }
                else
                { 
                
                }
            }
      

  11.   

    这样肯定报错,因为你点击CheckBox时候,要先执行page_load事件,这个datatable 你定义成全局的了,第一次是有值,第二次就没值了  去掉if(!postback),让每次都重新绑定下datatable 数据。。试试。。
      

  12.   


    我以前也碰到这样的问题
    是用ViewState解决的
    ViewState只是保存当页的内容 
    用这个比较合适