none
求教高手,数据绑定gridview后出错? RRS feed

  • 问题

  • 一个视图 来自于SQL数据库,添加到DataClasses1.dbml后,再从LINQDATASOURCE选中视图后,再用gridview选中linqdatasource作数据源后,运行马上出错,但在SQL里运行这个视图明明是正常的。

    2012年7月10日 7:50

答案

  • 谢谢你的提醒,我发现可能存在一个关于 从视图生成DataClasses1.dbml时的bug,会把视图中   joinrate decimal (5,2)生成为int型,导致运行时出错(已反复测试),因此只要把DataClasses1.dbml中生成的视图中的 joinrate的类型手动从int 改成decimal (5,2)后就正常运行了。
    2012年7月11日 0:56

全部回复

  • 把前台、后台具体的代码黏贴出来,谢谢!看上去转换错误。


    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年7月10日 7:52
  • SELECT
    dbo.hrtrainning.tplanid,
    dbo.hrtrainning.plandate,
    dbo.hrtrainning.begindate,
    dbo.hrtrainning.tperson,
    dbo.hrtrainning.course,
    dbo.hrtrainning.coursetype,
    dbo.hrtrainning.taddress,
    dbo.hrtrainning.torg,
    dbo.hrtrainning.tcosttime,
    dbo.hrtrainning.tobject,
    dbo.hrtrainning.ttype,
    dbo.hrtrainning.ttaget,
    dbo.hrtrainning.teffectstandard,
    dbo.hrtrainning.joincount,
    dbo.hrtrainning.joincountreal,
    dbo.hrtrainning.joinrate,
    dbo.hrtrainningDetial.A0188,
    dbo.hrtrainningDetial.workid,
    dbo.hrtrainningDetial.name,
    dbo.hrtrainningDetial.dept,
    dbo.hrtrainningDetial.examine,
    dbo.hrtrainningDetial.tjoin,
    dbo.hrtrainningDetial.tdetialid,
    dbo.hrtrainningDetial.tpeffect,
    dbo.hrtrainningDetial.tptotvalue

    FROM
    dbo.hrtrainning
    RIGHT JOIN dbo.hrtrainningDetial ON dbo.hrtrainning.tplanid = dbo.hrtrainningDetial.tplanid

    2012年7月10日 8:36
  • 直接绑定了?没有在后台写任何代码?数据转换?

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年7月10日 8:38
  • <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="hrtrainningform1.aspx.cs" Inherits="Websellcentre.hrtrainningform1" %>
    <%@ Register src="menuWebUserControl1.ascx" tagname="menuWebUserControl1" tagprefix="uc1" %>


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <uc1:menuWebUserControl1 ID="menuWebUserControl11" runat="server" />
        
        </div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>




        <asp:LinqDataSource ID="LinqDataSource1" runat="server" 
            ContextTypeName="Websellcentre.DataClasses1DataContext" EntityTypeName="" 
            TableName="hrtrainningview">
        </asp:LinqDataSource>
       

        <br />
        <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
            AllowSorting="True" AutoGenerateColumns="False" DataSourceID="LinqDataSource1">
            <Columns>
                <asp:BoundField DataField="tplanid" HeaderText="tplanid" 
                    SortExpression="tplanid" />
                <asp:BoundField DataField="plandate" HeaderText="plandate" 
                    SortExpression="plandate" />
                <asp:BoundField DataField="begindate" HeaderText="begindate" 
                    SortExpression="begindate" />
                <asp:BoundField DataField="tperson" HeaderText="tperson" 
                    SortExpression="tperson" />
                <asp:BoundField DataField="course" HeaderText="course" 
                    SortExpression="course" />
                <asp:BoundField DataField="coursetype" HeaderText="coursetype" 
                    SortExpression="coursetype" />
                <asp:BoundField DataField="taddress" HeaderText="taddress" 
                    SortExpression="taddress" />
                <asp:BoundField DataField="torg" HeaderText="torg" SortExpression="torg" />
                <asp:BoundField DataField="tcosttime" HeaderText="tcosttime" 
                    SortExpression="tcosttime" />
                <asp:BoundField DataField="tobject" HeaderText="tobject" 
                    SortExpression="tobject" />
                <asp:BoundField DataField="ttype" HeaderText="ttype" SortExpression="ttype" />
                <asp:BoundField DataField="ttaget" HeaderText="ttaget" 
                    SortExpression="ttaget" />
                <asp:BoundField DataField="teffectstandard" HeaderText="teffectstandard" 
                    SortExpression="teffectstandard" />
                <asp:BoundField DataField="joincount" HeaderText="joincount" 
                    SortExpression="joincount" />
                <asp:BoundField DataField="joincountreal" HeaderText="joincountreal" 
                    SortExpression="joincountreal" />
                <asp:BoundField DataField="joinrate" HeaderText="joinrate" 
                    SortExpression="joinrate" />
                <asp:BoundField DataField="A0188" HeaderText="A0188" SortExpression="A0188" />
                <asp:BoundField DataField="workid" HeaderText="workid" 
                    SortExpression="workid" />
                <asp:BoundField DataField="name" HeaderText="name" SortExpression="name" />
                <asp:BoundField DataField="dept" HeaderText="dept" SortExpression="dept" />
                <asp:BoundField DataField="examine" HeaderText="examine" 
                    SortExpression="examine" />
                <asp:BoundField DataField="tjoin" HeaderText="tjoin" SortExpression="tjoin" />
                <asp:BoundField DataField="tdetialid" HeaderText="tdetialid" 
                    SortExpression="tdetialid" />
                <asp:BoundField DataField="tpeffect" HeaderText="tpeffect" 
                    SortExpression="tpeffect" />
                <asp:BoundField DataField="tptotvalue" HeaderText="tptotvalue" 
                    SortExpression="tptotvalue" />
            </Columns>
        </asp:GridView>




        </form>
    </body>
    </html>
    2012年7月10日 8:41
  • using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    namespace Websellcentre
    {
        public partial class hrtrainningform1 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {

            }

          
        }
    }
    2012年7月10日 8:42
  • 注意在你的视图中,有两个整数类型的字段是可空的:joincount, joincountreal。

    如果这些字段的值为 NULL, 在读取的时候可能会因为读取的实际类型为 DbNULL 而不能转换为普通的整数而出错。


    冠军

    2012年7月10日 14:55
  • 谢谢你的提醒,我发现可能存在一个关于 从视图生成DataClasses1.dbml时的bug,会把视图中   joinrate decimal (5,2)生成为int型,导致运行时出错(已反复测试),因此只要把DataClasses1.dbml中生成的视图中的 joinrate的类型手动从int 改成decimal (5,2)后就正常运行了。
    2012年7月11日 0:56