根据另一个表中记录的ID在GridView中显示另一个表字段

时间:2011-04-28 09:37:16

标签: asp.net mysql

我目前有一个名为Attendance的SQL表和另一个名为Student的表。出勤表包含以下字段:出勤ID,日期,现在,学生ID和模块ID。我的学生表包含StudentID和Name字段。我的应用程序中的一个页面允许用户在文本框中输入学生ID,其中来自考勤表的所有日期,现在,ModuleID都显示在Gridview中,用于在文本框中输入的相应StudentID。到目前为止,这是我的代码:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                    ConnectionString="<%$ ConnectionStrings:RegisterConnectionString %>" 
                    SelectCommand="SELECT * FROM [Attendance] WHERE ([StudentID] = @StudentID)">
                    <SelectParameters>
                        <asp:ControlParameter ControlID="pnumTextBox" Name="StudentID" 
                            PropertyName="Text" Type="String" />
                    </SelectParameters>
                </asp:SqlDataSource>

                <asp:GridView ID="GridView1" runat="server" 
                    style="position:absolute; top: 241px; left: 357px; width: 356px;" 
                    AutoGenerateColumns="False" DataKeyNames="AttendanceID" 
                    DataSourceID="SqlDataSource1">
                    <Columns>
                        <asp:BoundField DataField="AttendanceID" HeaderText="AttendanceID" 
                            InsertVisible="False" ReadOnly="True" SortExpression="AttendanceID" />
                        <asp:CheckBoxField DataField="Present" HeaderText="Present" 
                            SortExpression="Present" />
                        <asp:BoundField DataField="Date" HeaderText="Date" SortExpression="Date" />
                        <asp:BoundField DataField="StudentID" HeaderText="StudentID" 
                            SortExpression="StudentID" />
                        <asp:BoundField DataField="ModuleID" HeaderText="ModuleID" 
                            SortExpression="ModuleID" />
                    </Columns>
                </asp:GridView>

除了显示AttendanceID,StudentID,ModuleID,Present和Date之外,我还要显示Student Table中的Student Name字段,该字段与文本框中输入的ID相同,我该如何实现?我认为可以在SELECT命令中执行此操作,但我不确定如何。感谢任何帮助,提前谢谢!

1 个答案:

答案 0 :(得分:0)

SELECT A.AttendanceID,A.Date,A.Present,A.ModuleID,S.StudentID,S.Name
FROM attendance A ,student S
WHERE A.StudentID = S.StudentID
AND S.StudentID = "Your Value from the textbox";

INNER JOIN

我更喜欢使用objectDataSource而不是SQLDataSource。 分离你的图层。并使用parameterized query来避免sql注入并验证用户条目。