我完整的代码是 
string shuju = "SELECT 日期,生产操作员,米数,克米平方 FROM 产品车间日报表" ; 
            OleDbCommand oledbcmd = new OleDbCommand(shuju, oledbcon); 
            OleDbDataAdapter olesda = new OleDbDataAdapter(oledbcmd); 
            DataSet ds = new DataSet(); 
            olesda.Fill(ds, "dat"); 
            GridView1.DataSource = ds.Tables["dat"]; 
            GridView1.DataBind(); 
就是那个克米平方的字段的小数位数太多了,我应该改动什么地方呢

解决方案 »

  1.   

    string shuju = "SELECT 日期,生产操作员,米数,CONVERT(NUMERIC(15,2),克米平方) FROM 产品车间日报表" ; 
      

  2.   

    模板列
    String.Format("{0:N2}",Eval("克米平方")); 
    String.Format("{0:F2}",Eval("克米平方")); 
    cast(克米平方 as Decimal(10,2)) as A
      

  3.   

    表达式中 'CONVERT' 函数未定义
    错误提示
      

  4.   

    我改成这样 String.Format("{0:N2}",Eval("克米平方")); 
    string shuju = "SELECT 日期,生产操作员,米数,cast(克米平方 as Decimal(10,2)) as A  FROM 产品车间日报表" ; 
                OleDbCommand oledbcmd = new OleDbCommand(shuju, oledbcon); 
                OleDbDataAdapter olesda = new OleDbDataAdapter(oledbcmd); 
                DataSet ds = new DataSet(); 
                olesda.Fill(ds, "dat"); 
                GridView1.DataSource = ds.Tables["dat"]; 
                GridView1.DataBind(); 出现错误提示
    Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用。
      

  5.   

    在sql的查询分析器中测试一下,应该没错的!!
      

  6.   

    我用的是access数据库
    我测试了就是提示表达式中 'CONVERT' 函数未定义
      

  7.   

    <%#Eval("克米平方").ToString("F2")%>; 
      

  8.   

    哦!!assess可能不行!!这是针对sql的!!
    那在GridView中设置:
    如你要设置的在0列,在GridView1的RowDataBound中打入以下代码:
    不过要保证该列有数据,如果没有数据还要判断一下!!
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[0].Text =Convert.ToDouble(e.Row.Cells[0].Text).ToString("F2");
            }
        }
      

  9.   

    那句话写在什么地方
    <%#Eval("克米平方").ToString("F2")%>; 
      

  10.   

    引用 11 楼 xushufeng 的回复:
    我用的是access数据库 
    我测试了就是提示表达式中 'CONVERT' 函数未定义 
    哦!!assess可能不行!!这是针对sql的!! 
    那在GridView中设置: 
    如你要设置的在0列,在GridView1的RowDataBound中打入以下代码: 
    不过要保证该列有数据,如果没有数据还要判断一下!! 
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
        { 
            if (e.Row.RowType == DataControlRowType.DataRow) 
            { 
                e.Row.Cells[0].Text =Convert.ToDouble(e.Row.Cells[0].Text).ToString("F2"); 
            } 
        }
    我加了
    但是没有起作用
      

  11.   

     <asp:TemplateField  HeaderText="">
    <ItemTemplate>
     <%#Eval("克米平方").ToString("F2")%>
    </ItemTemplate>
    </asp:TemplateField>
    或String.Format
                                  
      

  12.   

    是吗?这不可能!!
    设置断点,看看是否取到值了??
    在这句加后加断点
    e.Row.Cells[0].Text =Convert.ToDouble(e.Row.Cells[0].Text).ToString("F2"); 
      

  13.   

    <ItemTemplate> 
    <%#Eval("克米平方").ToString("F2")%> 
    </ItemTemplate> 
      

  14.   

    错误 1 “System.Web.UI.WebControls.GridViewCommandEventArgs”并不包含“Row”的定义 D:\excel\程序\one\c.aspx.cs 107 15 D:\excel\程序\
      

  15.   

    兄弟别急!!看看清楚,你如果是动态绑定,这程序肯定没错哦!!
    若是直接绑定的楼上很多都说了,可以在页面中打入:
    <ItemTemplate> 
    <%#Eval("克米平方").ToString("F2")%> 
    </ItemTemplate> 你再看看
    你是否在GridView1的RowDataBound事件下???
    在这个事件下一定有Row的!!
      

  16.   

    <ItemTemplate> 
    <%#Eval("克米平方").ToString("F2")%> 
    </ItemTemplate> 这个放在那里
    我放在我的查询语句下面提示错误错误 1 预处理器指令必须作为一行的第一个非空白字符出现 D:\excel\程序\Default.aspx.cs 52 16 D:\excel\程序\
      

  17.   


    <%# Convert.ToDouble(Eval("克米平方")).ToString("F2")
      

  18.   

    Format 吧,怎么都用tostring 你改变了人家的类型