2012-03-15 107 views
0

我在InsertItemTemplate中有一個ListView和兩個下拉控制器。這些下拉列表從另一個表中獲取其數據,而不是ListViews數據。在同一個ListView中顯示來自多個DataSources的數據

<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的INTE我的主表(電影)。

這是我的ItemTemplate看起來像:

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

它取決於你如何訪問數據:ADO .Net,一些ORM? – 2012-03-15 15:03:31

+0

我使用ADO.net訪問數據,我從列表中獲取數據 – 2012-03-15 15:05:35

+1

在下拉列表中訪問查詢本身時進行連接。 – IrishChieftain 2012-03-15 15:05:48

回答

2

修改正在由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" 

這一點後GenreNameDirectorName是你的GridView訪問。 更新您的ItemTemplate

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

編輯 我在您的評論,你從列表中獲取數據看到的。我猜它只是更新你的選擇語句。在我的例子中,我假設你使用SqlDataSource控件

相關問題