显示来自同一ListView中的多个DataSource的数据

时间:2012-03-15 15:00:54

标签: c# asp.net webforms

我在InsertItemTemplate中有一个ListView和两个下拉控制器。这些下拉列表从另一个表中获取数据,而不是ListViews数据。

<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="ObjectDataSource2"
   DataTextField="Genrename" DataValueField="GenreID" 
   SelectedValue='<%# Bind("GenreID") %>'>
</asp:DropDownList>
<br />
<asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="ObjectDataSource3"
   DataTextField="Directorname" DataValueField="RegissorID"
   SelectedValue='<%# Bind("DirectorID") %>'>
</asp:DropDownList>

我正在向ListView主要添加值,但是我在主表中插入的值是ID值,如GenreID。

我的表看起来像这样:

Movie       |    Genre   |    Director
James Bond        3              4
Donald Duck       6              13
The Hangover      7              8

现在,我想要显示流派和导演的名称而不是ID,但我仍然需要插入ID的主要表格(电影)。

这就是我的ItemTemplate的样子:

<td>
   <asp:Label ID="GenreIDLabel" runat="server" Text='<%# Eval("GenreID") %>' />
</td>
<td>
   <asp:Label ID="RegissorIDLabel" runat="server" Text='<%# Eval("RegissorID") %>' />
</td>

1 个答案:

答案 0 :(得分:3)

修改GridView正在访问的数据源控件的SelectCommand Join the three tables

示例:

 SelectCommand="Select m.movie,m.Genre,m.Director,g.GenreName,d.DirectorName From Movies as m Inner Join Genres as g ON m.Genre=g.GenreID Inner Join Directors as d ON m.Director=d.DirectorID"

在此点之后,您的gridview可以访问GenreNameDirectorName。 更新你的ItemTemplate

 <td>
  <asp:Label ID="GenreIDLabel" runat="server" Text='<%# Eval("GenreName") %>' />
</td>
<td>
 <asp:Label ID="RegissorIDLabel" runat="server" Text='<%# Eval("DirectorName") %>' />
</td>

修改 我在你的评论中看到你从列表中获取数据。我想它只是更新你的select语句。在我的例子中,我假设你正在使用SqlDataSource控件