<asp:TemplateColumn>
<ItemTemplate>
<%# ((int)(用这个参数 - ((TimeSpan)(DateTime.Now - (DateTime)DataBinder.Eval(Container.DataItem, "NewsDate"))).TotalDays))%>
</ItemTemplate>
</asp:TemplateColumn>    public string Count(string OldTime)
    {
        SqlConnection con = DB.createCon();
        con.Open();
        SqlCommand cmd = new SqlCommand("select NewsSort from NewsInfo", con);
        string NewsSort = Convert.ToString(cmd.ExecuteReader());
        if (NewsSort == "A")
        {
            OldTime = "60";
        }
        if (NewsSort == "B")
        {
            OldTime = "30";
        }
        if (NewsSort == "C")
        {
            OldTime = "15";
        }
        return OldTime;
    }
目的是,在后台定义一个参数,对这个参数进行判断再赋值,然后在前天把这个参数绑定到DataGrid的模板列中进行一个减法运算.现在问题是这个怎么在后台定义这个参数给前台调用?我上面试写的后台代码好象是个方法,但也不对,求高人帮我写一个.

解决方案 »

  1.   

    定义一个属性:
      public string xx
        {
            get
            {
                return (string)ViewState["xx"];
            }
            set
            {
                ViewState["xx"] = value;
            }
        }
      

  2.   

    public int xx
    {
        get
        {
            return int.Parse(ViewState["xx"].ToString());
        }
        set
        {
            ViewState["xx"] = value;
        }
    }
      

  3.   

    不是很明白上面代码,在前台怎么调用这个属性?还有我要先进行个判断,如果从数据库中查出NewsSort=A,那么定义的属性值要为60;
    如果从数据库中查出NewsSort=B,那么定义的属性值要为30;
    ……然后在前台的DateGrid模板列中调用这个属性。
      

  4.   

    定义这个属性后,将
    <ItemTemplate>
    <%# ((int)(用这个参数 - ((TimeSpan)(DateTime.Now - (DateTime)DataBinder.Eval(Container.DataItem, "NewsDate"))).TotalDays))%>
    </ItemTemplate>改成:<ItemTemplate>
    <%# ((int)(xx - ((TimeSpan)(DateTime.Now - (DateTime)DataBinder.Eval(Container.DataItem, "NewsDate"))).TotalDays))%>
    </ItemTemplate>看看
      

  5.   

    定义一个类cls,在cls中定义静态变量,把值保存到静态变量中,页面去调用类的这个静态变量
      

  6.   

    谢谢,我看明白了但还有点问题:
        public string OldTime
        {
            get
            {
                SqlConnection con = DB.createCon();
                con.Open();
                SqlCommand cmd = new SqlCommand("select RegisteredCategory from ProjectInfo", con);
                string RegisteredCategory = Convert.ToString(cmd.ExecuteReader());
                if (RegisteredCategory == "国家")
                {
                    OldTime = "60";
                }
                if (RegisteredCategory == "地区")
                {
                    OldTime = "30";
                }
                if (RegisteredCategory == "城市")
                {
                    OldTime = "15";
                }
                return (string)ViewState["OldTime"];
            }
            set
            {
                ViewState["OldTime"] = value;
            }<%# ((int)(Convert.ToInt32(OldTime) - ((TimeSpan)(DateTime.Now - (DateTime)DataBinder.Eval(Container.DataItem, "RegisteredDate"))).TotalDays))%>
    上面的代码不知道哪里错了,运算结果不对.
    是判断那里出错误了?还是在转换Convert.ToInt32(OldTime)时错了?
      

  7.   

    因为是把运算的结果绑定到DataGrid中,要求查出DataGrid的当前的列的RegisteredCategory=国家就以60去减,如果查出RegisteredCategory=地区就用30去减,如果查出RegisteredCategory=城市就用15去减.最后在DataGrid中显示.怎么做呢?
      

  8.   

    楼主,把这段语句在查询分析器里执行一下:select  RegisteredCategory,
    case RegisteredCategory
    when '国家' then 60
    when '地区' then 30
    when '城市' then 15
    end as oldtime
    from ProjectInfo