我在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>
答案 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可以访问GenreName
和DirectorName
。
更新你的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控件