string CatalogId;
string tkeyword;protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            CatalogId = Request.Params["CatalogId"].ToString(); //未将对象引用设置到对象的实例。            tkeyword = Request.Params["Keyword"].ToString(); //未将对象引用设置到对象的实例。            GetProducts(CatalogId,tkeyword);
        }
    }
private void GetProducts(string sCatalogId, string skey)
    {
        string cmdText = "SELECT * FROM Photos ORDER BY Id DESC";
        if (sCatalogId != null)
        {
            cmdText = "SELECT * FROM Photos where CatalogId=" + sCatalogId + " ORDER BY Id DESC";
        }
        if (skey != null)
        {
            cmdText = "SELECT * FROM Photos where name like '%" + skey +"%' ORDER BY Id DESC";
        }
    }为什么会出现这样的错误,如果两个值都给了的话就能显示,但如果只传了一个的话就会出错
那我想一次只传一个值,要么类别,要么关键字的话要怎么做,后面已经有判断了啊,哪里要改一下?

解决方案 »

  1.   

     CatalogId = Request.Params["CatalogId"].ToString(); //未将对象引用设置到对象的实例。             tkeyword = Request.Params["Keyword"].ToString(); //未将对象引用设置到对象的实例。 
    这里就应该判断。Request.Params["CatalogId"].   Request.Params["Keyword"].这2个参数任何一个为空的话ToString().都是会报错的,空对象如何能执行Tostring()方法呢?
      

  2.   

    问题,哎,太多了。
    if(Request.Params["CatalogId"]!=null)
    {
     CatalogId = Request.Params["CatalogId"].ToString();
    }
            if (sCatalogId != null) 
            { 
                cmdText = "SELECT * FROM Photos where CatalogId=" + sCatalogId + " ORDER BY Id DESC"; 
            } 
            esle if (skey != null) 
            { 
                cmdText = "SELECT * FROM Photos where name like '%" + skey +"%' ORDER BY Id DESC"; 
            } 
      

  3.   

    CatalogId = !String.IsNullOrEmpty(Request.Params["CatalogId"].ToString())?Request.Params["CatalogId"].ToString():String.Empty;
    tkeyword =  !String.IsNullOrEmpty(Request.Params["Keyword"].ToString())?Request.Params["Keyword"].ToString():String.Empty;
      

  4.   

    private void GetProducts(string sCatalogId, string skey) 
        { 
            string cmdText = "SELECT * FROM Photos ORDER BY Id DESC"; 
            if (sCatalogId != null || skey != null) 
            { 
                cmdText = "SELECT * FROM Photos where CatalogId=" + sCatalogId + " ORDER BY Id DESC"; 
           
                cmdText = "SELECT * FROM Photos where name like '%" + skey +"%' ORDER BY Id DESC"; 
            } 
        } 
      

  5.   


    一次写两个cmdtext这样不行的吧?
      

  6.   

    改成两个不同的呢?
    private void GetProducts(string sCatalogId, string skey) 
        { 
            string cmdText = "SELECT * FROM Photos ORDER BY Id DESC"; 
            string cmdText1 = "SELECT * FROM Photos ORDER BY Id DESC"; 
            if (sCatalogId != null || skey != null) 
            { 
                cmdText = "SELECT * FROM Photos where CatalogId=" + sCatalogId + " ORDER BY Id DESC"; 
          
                cmdText1 = "SELECT * FROM Photos where name like '%" + skey +"%' ORDER BY Id DESC"; 
            } 
        } 
    思路大概应这样,对于你这一问题,我没上机测试对不对.