页面代码:<asp:GridView ID="gv_LtxList_ZC" runat="server" Width="90%" AutoGenerateColumns="False">
            <Columns>
                <asp:BoundField DataField="Sm.Number" HeaderText="编码" >
                <ItemStyle HorizontalAlign="Center" />
                </asp:BoundField>
                <asp:BoundField DataField="Sm.xm" HeaderText="姓名" >
                <ItemStyle HorizontalAlign="Center" />
                </asp:BoundField>
                <asp:BoundField DataField="sm.xb" HeaderText="性别" >
                <ItemStyle HorizontalAlign="Center" />
                </asp:BoundField>
                <asp:BoundField DataField="sm.deptName" HeaderText="部门名称" >
                <ItemStyle HorizontalAlign="Center" />
                </asp:BoundField>
                <asp:BoundField DataField="dwName" HeaderText="单位名称" >
                <ItemStyle HorizontalAlign="Center" />
                </asp:BoundField>
                <asp:TemplateField HeaderText="还原">
                    <ItemTemplate>
                       <a href='#' onclick='return huanyun(<%#Eval("sm.id") %>)'>
                           <img src="../../images/export.gif" border=0px /></a>
                    </ItemTemplate>
                    <ItemStyle HorizontalAlign="Center" />
                </asp:TemplateField>
                <asp:TemplateField HeaderText="删除">
                    <ItemTemplate>
                       <a href='#' onclick=''>
                           <img src="../../images/delete.gif" border=0px /></a>
                    </ItemTemplate>
                    <ItemStyle HorizontalAlign="Center" />
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
后台绑定代码: /// <summary>
    /// 初始化
    /// </summary>
    private void InitLTX()
    {
        MemberDAL md = new MemberDAL();
        //找到转出的
        gv_LtxList_ZC.DataSource= md.findLtx("2");
        gv_LtxList_ZC.DataBind();
    }
md.findLtx("2")中的代码:
 /// <summary>
    /// 查找指定状态的离退休人员,0-表示未审核 1- 表示已通过审核 2- 已转出   3- 已删除
    /// </summary>
    /// <param name="p"></param>
    /// <returns></returns>
    public List<MemberInfo> findLtx(string state)
    {
        var member = from p in db.szb_member
                     join d in db.sys_dw on p.dwId equals d.id
                     where p.state.Equals(state)
                     select new MemberInfo
                     {
                         Sm = p,
                         DwName = d.dwName
                     };        return member.ToList();
    }
MemberInfo 中的代码:/// <summary>
///MemberInfo 的摘要说明
/// </summary>
public class MemberInfo
{
public MemberInfo()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
    private szb_member _sm;    public szb_member Sm
    {
        get { return _sm; }
        set { _sm = value; }
    }
    private string _dwName;    public string DwName
    {
        get { return _dwName; }
        set { _dwName = value; }
    }}现在想绑定GridView,通过调试可以读取数据库数据,就是在绑定的时候提示错误:
在选定的数据源上未找到名为“Sm.Number”的字段或属性。使用RadControl 这样写就没有问题,GridView 如何实现呢?

解决方案 »

  1.   

        MemberInfo 中字段怎么写的   Eval的时候就怎么写 
    你写Sm。Number 肯定找不到咧   MemberInfo 中根本没有这个字段还找个毛啊
      

  2.   


    按照你的思路,把所有的sm.都去了。但是还是提示:在选定的数据源上未找到名为“Number”的字段或属性。
      

  3.   

    改成下面这样,提示上面的错误:在选定的数据源上未找到名为“Number”的字段或属性。
    <asp:GridView ID="gv_LtxList_ZC" runat="server" Width="90%" AutoGenerateColumns="False">
                <Columns>
                    <asp:BoundField DataField="Number" HeaderText="编码" >
                    <ItemStyle HorizontalAlign="Center" />
                    </asp:BoundField>
                    <asp:BoundField DataField="xm" HeaderText="姓名" >
                    <ItemStyle HorizontalAlign="Center" />
                    </asp:BoundField>
                    <asp:BoundField DataField="xb" HeaderText="性别" >
                    <ItemStyle HorizontalAlign="Center" />
                    </asp:BoundField>
                    <asp:BoundField DataField="deptName" HeaderText="部门名称" >
                    <ItemStyle HorizontalAlign="Center" />
                    </asp:BoundField>
                    <asp:BoundField DataField="dwName" HeaderText="单位名称" >
                    <ItemStyle HorizontalAlign="Center" />
                    </asp:BoundField>
                    <asp:TemplateField HeaderText="还原">
                        <ItemTemplate>
                           <a href='#' onclick='return huanyun(<%#Eval("id") %>)'>
                               <img src="../../images/export.gif" border=0px /></a>
                        </ItemTemplate>
                        <ItemStyle HorizontalAlign="Center" />
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="删除">
                        <ItemTemplate>
                           <a href='#' onclick=''>
                               <img src="../../images/delete.gif" border=0px /></a>
                        </ItemTemplate>
                        <ItemStyle HorizontalAlign="Center" />
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
      

  4.   


       private szb_member _sm;    public szb_member Sm
        {
            get { return _sm; }
            set { _sm = value; }
        }szb_member 对象在那,看看这个里面怎么定义的,Eval里面绑定的是: Sm下面定义的,也就是Sm.XXX
      

  5.   

    纠结.linq的.还不会呢
    没想到CSDN的C# CODE高亮也支持LINQ...
      

  6.   


    LinQ自动生成的,下面是代码:应该没有写错的,就是Sm.Number [Column(Storage="_Number", DbType="NVarChar(20) NOT NULL", CanBeNull=false, IsPrimaryKey=true)]
    public string Number
    {
    get
    {
    return this._Number;
    }
    set
    {
    if ((this._Number != value))
    {
    this.OnNumberChanging(value);
    this.SendPropertyChanging();
    this._Number = value;
    this.SendPropertyChanged("Number");
    this.OnNumberChanged();
    }
    }
    }
      

  7.   

    难道是GridView不支持List<MemberInfo>里传值类的方式?用最新版的RadControl(Telerik)中的RadGird可以实现。
      

  8.   

    foreach(MemberInfo mb in list)
    {
       实例化数据层;
       mb. Sm=实例化数据层.读取number方法名(mb.number);
    }放在你的读取方法后 试试看
      

  9.   

    GridView绑定List有那么复杂吗??难道楼主用的语言不是ASP,看着好复杂啊
      

  10.   

    你在后台用Sm . 看里面有 Number这个字段没
      

  11.   

    找到解决方法了。<asp:BoundField DataField="Sm.Number" HeaderText="编码" >
                    <ItemStyle HorizontalAlign="Center" />
                    </asp:BoundField>
    放DataField里不行,把这列转换成模板,然后用Eval("Sm.Number")就可以了,这是为什么呢???
      

  12.   

    你那list里面读取出来有这个数据不?
      

  13.   

      public List<MemberInfo> findLtx(string state)
        {
            var member = from p in db.szb_member
                         join d in db.sys_dw on p.dwId equals d.id
                         where p.state.Equals(state)
                         select new MemberInfo
                         {
                             Sm = p,
                             DwName = d.dwName
                         };        return member.ToList(MemberInfo);
        }在return后面的 ToList<>中,加上 models "MemberInfo"