using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;namespace ControlLibrary
{
    [DefaultProperty("clientControlName")]
    [ToolboxData("<{0}:Selection_Control runat=server></{0}:Selection_Control>")]
    public class Selection_Control : WebControl
    {
        [Bindable(false)]
        [Category("Appearance")]
        [DefaultValue("")]
        [Localizable(true)]
        public string clientControlName
        {
            get
            {
                String s = (String)ViewState["clientControlName"];
                return ((s == null) ? String.Empty : s);
            }            set
            {
                ViewState["clientControlName"] = value;
            }
        }        [Bindable(false)]
        [Category("Appearance")]
        [DefaultValue("")]
        [Localizable(true)]
        public int Count
        {
            get
            {
                int c = (int)ViewState["Count"];
                return c;
            }            set
            {
                ViewState["Count"] =value;
            }
        }
        public string getJScript()
        {
            string s = "";
            s+=("<SCRIPT LANGUAGE=\"JavaScript\"> \n");
            s += ("function checkAll(name,count)\n");
            s += ("{\n    for (i=0;i<count;i++) {");
            s += ("\n        var cb=new Array();");
            s += ("\n        cb=document.getElementsByName(name+i);");
            s += ("\n        cb[0].checked=true;\n");
            s += ("}\n  }\n");
            s += ("function uncheckAll(name,count)\n{\n ");
            s += ("for (i=0;i<count;i++) {\n");
            s += ("var cb=new Array();\n");
            s += ("cb=document.getElementsByName(name+i);\n");
            s += ("cb[0].checked=false;\n    }\n}\n");
            s += ("function checkReverse(name,count)\n{\n");
            s += ("for (i=0;i<count;i++) {\n");
            s += ("var cb=new Array();\n");
            s += ("cb=document.getElementsByName(name+i);\n");
            s += ("if (cb[0].checked==true)\n");
            s += ("cb[0].checked=false;\n");
            s += ("else cb[0].checked=true;\n ");
            s += ("}\n}\n//  End -->\n</script>\n");
            return s;        }
        public void writeCheckAll(HtmlTextWriter output)
        {
            output.Write(" <input type=\"button\" name=\"CheckAll\" value=\"Check All \"   onClick=javascript:checkAll(\"" + clientControlName + "\"," + Count + ")>");        }
        public void writeCheckNone(HtmlTextWriter output)
        {
            output.Write(" <input type=\"button\" name=\"CheckNone\" value=\"Check None \"   onClick=javascript:uncheckAll(\"" + clientControlName + "\"," + Count + ")>");
        }
        public void writeCheckReverse(HtmlTextWriter output)
        {
            output.Write(" <input type=\"button\" name=\"Selectreverse\" value=\"Select Reverse \"   onClick=javascript:checkReverse(\"" + clientControlName + "\"," + Count + ")>");
        }
        protected override void RenderContents(HtmlTextWriter output)
        {            output.Write(getJScript());
            writeCheckAll(output);
            writeCheckNone(output);
            writeCheckReverse(output);
        }
    }
}
当我把控件拉到页面时,显示错误Count"未将对象引用设置到对象的实例“

解决方案 »

  1.   

     get
                {
                    int c = (int)ViewState["Count"];
                    return c;
                }ViewState["Count"]要判读一下是否为null然后再转int
      

  2.   

    首先要判断ViewState["Count"]是否为空,如果为空则赋个默认值。public int Count
    {
           get
           {
              int c = 0;
              if(ViewState["Count"] != null)
              {
                c = (int)ViewState["Count"];
              }
              return c;
           }       set
           {
               ViewState["Count"] =value;
           }
    }