2013-03-06 45 views
2

使用中继器我运行'SelectedUtility'表并输出匹配的地方。 这可以正常工作,但是它会显示'Utility_Id',它是Utility Table中'id'的外键。使用中继器,从该表中取FK并显示列

我实际上想在Utility表中显示'name'列。我怎样才能做到这一点? 像<th style="width:200px;"><%# Eval("Utility_Id.name") %></th>
抑或是在代码中完成的背后...感谢任何回应

ASPX:

<asp:Repeater id="rptSelectedUtilities" runat="server"> 
       <HeaderTemplate> 
        <table class="detailstable FadeOutOnEdit"> 
         <tr> 
          <th style="width:200px;">Utility</th>  
         </tr> 
       </HeaderTemplate> 
       <ItemTemplate> 
         <tr> 
          <th style="width:200px;"><%# Eval("Utility_Id") %></th> 
         </tr> 
       </ItemTemplate> 
       <FooterTemplate> 
        </table> 
       </FooterTemplate> 
      </asp:Repeater> 

后面的代码:

DBData db = new DBDatat(); 
     List<Select_Utility> SelectedUtility = 
      (from SU in db.Select_Utilities 
      where SU.Work_Id == 3 
      select SU).ToList(); 

     rptSelectedUtilities.DataSource = SelectedUtility; 

rptSelectedUtilities.DataBind();


编辑:

DBData db = new DBDatat(); 
    List<Utility_Company> Utility = new List<Utility_Company>(); 
    List<Select_Utility> SelectedUtility = 
     (from SU in db.Select_Utilities 
     join UTL in Utility on SU equals UTL.id 
     where SU.Worksite_Id == 3 
     select SU).ToList(); 

    rptSelectedUtilities.DataSource = SelectedUtility; 
    rptSelectedUtilities.DataBind(); 

抛出的错误“的表达式中的一个的连接子句中的类型不正确。类型推断呼叫失败“加入”

// shouldt的加入是对name..so加入UTL在SU实用等于UTL.Name //而非UTL.id

还试图加入UTL在SU db.Utility_Companies等于UTL.id ... BUIT同样的错误


第二个编辑: <%#的eval( “名称”)%> 抛出错误:数据绑定: 'Select_Utility' 呢不包含名称为“名称”的属性。

 DBData db = new DBData(); 

     List<Select_Utility> SelectedUtility = 
      (from SU in db.Select_Utilities 
      where SU.Worksite_Id == 3 
      select SU).ToList(); 

     rptSelectedUtilities.DataSource = SelectedUtility; 
     rptSelectedUtilities.DataBind(); 


    List<Utility_Company> Utility = new List<Utility_Company>(); 
     var query = from u in db.Utility_Companies 
        join su in db.Select_Utilities 
         on u.id equals su.Utility_Id 
        where su.Worksite_Id == 3 
        select u; 

     rptSelectedUtilities.DataSource = query.ToList(); 
     rptSelectedUtilities.DataBind(); 

回答

1

查询(你应该选择加入公用事业):

DBData db = new DBDatat(); 
var query = from u in db.Utility 
      join su in db.Select_Utilities 
       on u.Id equals su.Utility_Id 
      where su.Work_Id == 3 
      select u; 

rptSelectedUtilities.DataSource = query.ToList(); 
rptSelectedUtilities.DataBind(); 

页(实用的显示名称):

<th style="width:200px;"><%# Eval("Name") %></th> 
+0

DataBinding:'Select_Utility'不包含名为'Name'的属性。是我得到的错误。 'name'不包含在'Utility'表内的'Select_utility'中,'Select utility'确实保存了'Utility Id'。 – John 2013-03-06 11:30:55

+0

@约翰抱歉,没有得到你有两张桌子。请参阅更新 – 2013-03-06 11:42:05

+0

然后我删除第一个Linq吗?仍然与DataBinding错误:'Select_Utility'不包含名称为'名称'的属性....请参阅我的代码的第二次编辑...谢谢 – John 2013-03-06 11:50:33

1

使用内连接的外部表。并选择该ID。

DBData db = new DBDatat(); 
     List<Select_Utility> SelectedUtility = 
      (from SU in db.Select_Utilities join UTL in Utility on SU equals UTL.Utility_Id 
      where SU.Work_Id == 3 
      select SU).ToList(); 
+0

请看编辑 – John 2013-03-06 11:44:50

相关问题