string str1 = "";
        Selectdb db = new Selectdb();
        string starttimen = TextBox3.Text;
        string endtime = TextBox4.Text;
        string allsql = ViewState["Str"].ToString();
        string chaxun = ViewState["WhereStr"].ToString();
        //string allsql = string.Format("select OLDTXCODE,OPERATORNO,COUNT(amount) as numb ,sum(cast(amount as bigint))  as amt from dbo.View_ZSB  group by OLDTXCODE,OPERATORNO");  
        DataSet ds;
        if (str1 == allsql)
        {
            ds = db.GetTableList(str1);
            DataTable dt1 = ds.Tables[0];
            if (dt1.Rows.Count > 0)
            {
                DataTable2Excel(dt1);
            }
        }
        else if (str1 == chaxun)
        {
            ds = db.GetTableList(str1);
            DataTable dt = ds.Tables[0];
            if (dt.Rows.Count > 0)
            {
                DataTable2Excel(dt);
            }
        }        else
        {
            Response.Write("<script language=javascript>alert('没有数据!');</script>");
            return;
        }为什么不执行if语句????  帮忙看下阿.

解决方案 »

  1.   

      string allsql = ViewState["Str"]==null?"":ViewState["Str"].ToString();
      string chaxun = ViewState["WhereStr"]==null?"":ViewState["WhereStr"].ToString();不会调试的程序员不是好厨师
      

  2.   

    因为 你 allsql 不是空    str1 == allsql   好好看看两个取得的值  
       你 ( !=   )   应该就进去了
      

  3.   

    因为:(1)if所在的代码块没有被执行。(2)if的条件不满足。(3)if被执行了,但是代码不符合你的预期,你感觉没有执行。按照这个思路去调试。
      

  4.   

    打个断点,跟踪一下就知道了,可能是没有数据,所以跳过if语句了。还有if(str1 == allsql)这种字符串比较的话,最好Trim()去掉首尾空格。
      

  5.   

    条件不满足 
     
    断点ViewState["Str"]的值
      

  6.   


    string allsql 调试看了,是有值的,  . 我的想法是.  把allsql的值赋给str1  然后执行if下面的条件.
    可是不知道为什么if(str1==allsql)就不执行下面的方法了.
      

  7.   


    断点调试看了 是有值的,
    if(str1==allsql)  是不是这样赋值有问题呢?
      

  8.   

    if(str1==allsql)我总感觉是我这句错了.
      

  9.   


    在if(...)怎么判断把allsql的值 赋给st1呢??? 
      

  10.   


    这样不是赋值,是比较。str1=allsql.toString(); 这样才是赋值
      

  11.   

    我的目的是想把allsql的语句 传到 db.GetTableList(str1);  这个方法里的.
      

  12.   


    string str1 = "";
      Selectdb db = new Selectdb();
      string starttimen = TextBox3.Text;
      string endtime = TextBox4.Text;
      string allsql = ViewState["Str"].ToString();
      string chaxun = ViewState["WhereStr"].ToString();
      //string allsql = string.Format("select OLDTXCODE,OPERATORNO,COUNT(amount) as numb ,sum(cast(amount as bigint)) as amt from dbo.View_ZSB group by OLDTXCODE,OPERATORNO");   
      DataSet ds;
      if (str1 == allsql)
    以上是IF前的语句 你给str1赋值 是空 对吧 然后到if 也没再赋值 那str1是空 
    allsql = ViewState["Str"].ToString(); 所以allsql 是这个值 也就是  ViewState["Str"]如果不是空 就不会执行if 所以 你找找 赋值的地方吧
      

  13.   


            string str1="" ;
            Selectdb db = new Selectdb();
            string starttimen = TextBox3.Text;
            string endtime = TextBox4.Text;
            string allsql = string.Format("select OLDTXCODE,OPERATORNO,COUNT(amount) as numb ,sum(cast(amount as bigint))  as amt from dbo.View_ZSB  group by OLDTXCODE,OPERATORNO");  
            string chaxun = string.Format("select OLDTXCODE,OPERATORNO,COUNT(amount) as numb,sum(cast(amount as bigint))  as amt from dbo.View_ZSB where OPERATORNO='0101' group by OLDTXCODE,OPERATORNO");
            DataSet ds;
            if (......)//这里的条件怎么写阿?  
            {
                ds = db.GetTableList(str1);//想把allsql传到这里来执行方法.
                DataTable dt1 = ds.Tables[0];
                if (dt1.Rows.Count > 0)
                {
                    DataTable2Excel(dt1);
                }
            }
            else if (.....)////这里的条件怎么写阿?  
            {
                ds = db.GetTableList(str1);//想把chaxun传到这里来执行方法.
                DataTable dt = ds.Tables[0];
                if (dt.Rows.Count > 0)
                {
                    DataTable2Excel(dt);
                }
            }
      

  14.   

    if判断 你自己决定啊
    你需要判断什么 别人不知道你该判断后 这样写
     string allsql="";
    if(...){
      allsql= string.Format("select OLDTXCODE,OPERATORNO,COUNT(amount) as numb ,sum(cast(amount as bigint))  as amt from dbo.View_ZSB  group by OLDTXCODE,OPERATORNO");
    }else{  
            allsql = string.Format("select OLDTXCODE,OPERATORNO,COUNT(amount) as numb,sum(cast(amount as bigint))  as amt from dbo.View_ZSB where OPERATORNO='0101' group by OLDTXCODE,OPERATORNO");
    }
       ds = db.GetTableList( allsql );//想把allsql传到这里来执行方法.
                DataTable dt1 = ds.Tables[0];
                if (dt1.Rows.Count > 0)
                {
                    DataTable2Excel(dt1);
                }