问题描述:用codesmith生成了实体类,把数据库表的外键都作为对象来处理,感觉就是一个“折腾”!这是数据访问层代码:其中UserInfo是userId外键作为对象的引用,类似的还有ApproveState这个也是外键引用对象
  /// <summary>
        /// 获取汇款信息列表
        /// </summary>
        /// <returns></returns>
        public List<PostHistory> GetPostHistory()
        {
            List<PostHistory> postHistoryList = new List<PostHistory>(); //保存汇款历史列表            string sql = "SELECT a.PostHistoryId,a.UserId,a.Bank,a.Money,a.PostTime,a.PostDesc, CASE a.ApproveState WHEN 1 THEN '未追加' WHEN 2 THEN '已撤回' ELSE '是' END AS ApproveState,b.UserName FROM PostHistory a,UserInfo b WHERE a.UserId=b.UserId ORDER BY a.PostTime DESC";            using (SqlConnection connection = new SqlConnection(_conString))
            {
                //create command
                SqlCommand command = new SqlCommand(sql,connection);                //open connection
                connection.Open();                //get datareader
                SqlDataReader reader = command.ExecuteReader();                while (reader.Read())
                {
                    userService = new UserService();
                    approveStateService = new ApproveStateService();                    PostHistory postHistory = new PostHistory();
                    postHistory.PostHistoryId = (int)reader["PostHistoryId"];                    string userId = (string)reader["UserId"];
                    //userInfo
                    postHistory.User = userService.GetUserInfo(userId);                    postHistory.Bank = (string)reader["Bank"];
                    postHistory.Money = (int)reader["Money"];
                    postHistory.PostTime = (DateTime)reader["PostTime"];
                    postHistory.PostDesc = (string)reader["PostDesc"];                     int approveStateId=0;
                    string approveState =(string)reader["ApproveState"];                    if (approveState == "未追加")
                        approveStateId = 1;
                    else if (approveState == "已撤回")
                        approveStateId = 2;
                    else if (approveState == "是")
                        approveStateId = 3;                    //approveState
                    postHistory.ApproveState = approveStateService.GetApproveState(approveStateId);                    //add to the collection
                    postHistoryList.Add(postHistory);
                }
            }
            return postHistoryList;
        }
如下是gridView绑定代码:
 <asp:GridView
                ID="grdPostInfo"
                DataKeyNames="PostHistoryId"
                DataSourceID="srcPostInfo"
                AllowPaging="true"
                PageSize="5"
                CssClass="gvUserInfoStyle"
                HeaderStyle-CssClass="gvUserInfo_HeaderStyle"
                GridLines="Both"
                EmptyDataText="暂无用户汇款信息!"
                AutoGenerateColumns="false"
                runat="server">
                <Columns>
                    <asp:TemplateField HeaderText="选定(√)">
                        <ItemTemplate>
                            <asp:CheckBox
                                    ID="chkSelectAll_AdminHomePost"
                                    runat="server" />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField
                            HeaderText="用户ID"
                            DataField="PostHistory.User.UserId" />     <================此处数据绑定的问题
                    <asp:BoundField
                            HeaderText="金额(元)"
                            DataField="Money" />
                    <asp:BoundField
                            HeaderText="汇款时间"
                            DataField="PostTime" />
                    <asp:BoundField
                            HeaderText="是否已追加金额"
                            DataField="ApproveState" />
                    <asp:HyperLinkField
                            HeaderText="汇款详情"
                            Text="查看详情"
                            DataNavigateUrlFormatString="DisplayPostDetail.aspx?id={0}"
                            DataNavigateUrlFields="PostHistoryId" />
                </Columns>
       </asp:GridView>
业务逻辑只是单纯的返回数据访问层的PostHistory列表。这个鬼东西怎么个绑定法呀?