2009-11-06 54 views
1

我有一个主客户的详细信息页面。从列表中选择一个客户,并打开详细信息视图,包括名称,地址等。如何在DetailsView中执行数据查找字段?

我被要求添加一个列出销售代表服务该客户的字段。

我想要新字段持有SalesRep表的外键:SalesRepID。一个整数。

我不确定如何“连线”ItemTemplate字段以在标签中显示销售代表名称。也不知道可能的销售代表的EditItemTemplate下拉列表

我知道我需要创建一个数据源来将销售代表检索到数据集中。

我们称之为“SQL_Reps_source”。

一个DropDownList似乎只喜欢一个值的列表,似乎并没有像HashTable或SortedList那样处理Keys和Values。

有关如何解决这个问题的任何建议?

感谢

+0

查看我的近期评论。 – Phaedrus 2009-11-10 18:51:48

回答

2

下面的示例添加一个DropDownList到DetailsView控件的EditItemTemplate里。 DataSourceID被设置为检索销售代表名称和ID的数据源控件。

<asp:TemplateField HeaderText="Sales Rep"> 
    <EditItemTemplate> 
     <asp:SqlDataSource ID="SqlDataSource" runat="server" 
      ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" 
      SelectCommand="SELECT SalesRepID, SalesRepName FROM SalesReps"> 
     </asp:SqlDataSource> 
     <asp:DropDownList ID="DropDownList" Runat="server" 
      DataTextField="SalesRepName" DataValueField="SalesRepID"  
      SelectedValue='<%# Bind("SalesRepID") %>' 
      DataSourceID="SqlDataSource"> 
     </asp:DropDownList> 
    </EditItemTemplate> 
    <ItemTemplate> 
     <asp:Label ID="Label" Runat="server" 
      Text='<%# Bind("SalesRepName") %>'></asp:Label> 
    </ItemTemplate> 
</asp:TemplateField> 
+0

问题:标签如何从绑定的数据集中找到合适的销售代表? 例如,假设客户记录的SalesRepID为15,存储在CompanyRepID字段中。这是销售代表表格中的Frank Jones。 那么ItemTemplate标签如何从100个salesreps的数据集中获得“Frank Jones”?不要,你不得不在某处做实际的“查找”吗? – BornInChicago 2009-11-06 13:51:37

+0

您提到了您为客户使用“主 - 细节”视图。 DetailsView绑定到一个数据源,该数据源使用其SelectCommand中指定的查询来查找记录。我假设我们的主人通过参数传递客户的id来查找detailsview的数据源。我可以提供一个更完整的例子,你想。 – Phaedrus 2009-11-10 18:50:37

0
  1. 出于显示的目的 - 返回销售代表的名称,而不是ID

  2. 的DropDownList(DDL)可以处理的值和键就好了,命名是有点过虽然。 ddl.DataTextField属性将保存Name,ddl.DataValueField属性将保存该ID。 (有关详细信息,请参见this answer

  3. 在EditTemplate中,您需要按上述填充DropDown,然后将其SelectedValue设置为quesion中的销售代表编号。

希望这会有所帮助。

0

当您绑定的下拉列表做到这一点:

ddl.DataSource = SQL_Reps_source; 
ddl..DataTextField = "fullname"; 
ddl..DataValueField = "id"; 
相关问题