网格视图外键表示

Posted

技术标签:

【中文标题】网格视图外键表示【英文标题】:Grid-view Foreign Key representation 【发布时间】:2014-01-30 11:50:20 【问题描述】:

我一直在尝试从另一个表中插入一个值,同时保留原始表的值,以便让用户清楚他们正在选择什么(很抱歉,这很难解释)。

这是我当前的 sql 源和选择命令: 选择命令:# 为了清楚说明,下面的代码显然是问题所在! #

SelectCommand="SELECT c.ClassID, c.TeacherID, c.ClassYear, c.SubjectID, t.TeacherForename FROM (Class c INNER JOIN Teacher t ON c.TeacherID = t.TeacherID), s.SubjectName FROM (Class c INNER JOIN Subject s ON c.SubjectID = s.SubjectID)" 

SQL 数据源的:

 <asp:TemplateField HeaderText="SubjectName">
            <ItemTemplate>
            <%# Eval("SubjectName")%>
            </ItemTemplate>
             <EditItemTemplate>
                <asp:DropDownList ID="DropDownList2" runat="server" 
                    DataSourceID="SqlDataSource2" DataTextField="SubjectName" 
                    DataValueField="SubjectID" SelectedValue='<%# Bind("SubjectID") %>'>
                </asp:DropDownList>
                <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
                    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
                    ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" 
                    SelectCommand="SELECT Subject.SubjectName, Class.SubjectID FROM (Class INNER JOIN Subject ON Class.SubjectID = Subject.SubjectID)">
                </asp:SqlDataSource>
             </EditItemTemplate>
          </asp:TemplateField>

          <asp:TemplateField HeaderText="TeacherName">
            <ItemTemplate>
            <%# Eval("TeacherForename") %>
            </ItemTemplate>
                <EditItemTemplate>
                    <asp:DropDownList ID="DropDownList1" runat="server" 
                        DataSourceID="SqlDataSource3" DataTextField="TeacherForename" 
                        DataValueField="TeacherID" SelectedValue='<%# Bind("TeacherID") %>'>
                    </asp:DropDownList>
                    <asp:SqlDataSource ID="SqlDataSource3" runat="server" 
                        ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
                        ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" 
                        SelectCommand="SELECT Teacher.TeacherForename, Class.TeacherID FROM (Class INNER JOIN Teacher ON Class.TeacherID = Teacher.TeacherID)">
                    </asp:SqlDataSource>
                </EditItemTemplate>
          </asp:TemplateField>

我希望的最终结果是,SubjectID 和 TeacherID 的当前值将在网格视图中通过包含 SubjectName 和 TeacherForename 值的下拉选项表示(当用户希望编辑它们时)(我希望这会让它更清楚)。

但它说我的选择命令中的 FROM 语句有问题,我尝试了这个选择命令,只使用 TeacherID 到 TeacherForename,它工作正常,但是一旦我将我的 SubjectID 添加到 SubjectName,它就会产生一个错误,我不能我自己的缘故找到它。

任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

试试这个查询..

SELECT 
c.ClassID
, c.TeacherID
, c.ClassYear
, c.SubjectID
, t.TeacherForename
, s.SubjectName

 FROM Class c 
 INNER JOIN Teacher t ON c.TeacherID = t.TeacherID
 INNER JOIN Subject s ON c.SubjectID = s.SubjectID

【讨论】:

我在 VB 中,但没有用 :/ 但是谢谢,还有其他信息可以提供帮助吗?

以上是关于网格视图外键表示的主要内容,如果未能解决你的问题,请参考以下文章

图像仅显示在网格视图的第一项中

笔记:实现网格视图数据选择

场景视图控制栏

使用Umbraco 7.2网格视图,如何将网格视图插入模板?

Drupal 7 使用子网格创建网格的视图

网格视图中的行编辑 C#