Отображение другого поля таблицы в GridView на основе идентификатора записи в другой таблице

#asp.net #mysql

#asp.net #mysql

Вопрос:

В настоящее время у меня есть таблица SQL с именем Attendance и другая таблица с именем Student. Таблица посещаемости содержит поля: AttendanceID, Date, Present, StudentID и идентификатор модуля. В моей таблице student есть поля StudentID и Name. Одна страница в моем приложении позволяет пользователю вводить идентификатор студента в текстовое поле, где все данные date, present, ModuleID из таблицы посещаемости отображаются в Gridview для соответствующего идентификатора студента, который вводится в текстовое поле. Вот мой код, который пока работает:

 <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 и даты, мне нужно отобразить поле имени студента из таблицы Student, которое имеет тот же идентификатор, что и введенный в текстовом поле, как мне этого добиться? Я думаю, что это можно сделать с помощью команды SELECT, но я не уверен, как. Любая помощь приветствуется, заранее спасибо!

Ответ №1:

 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";
  

ВНУТРЕННЕЕ ОБЪЕДИНЕНИЕ

Я предпочитаю использовать objectDataSource , а не SQLDataSource . для разделения ваших слоев.и используйте parameterized query , чтобы избежать внедрения sql и проверить запись пользователя.

Комментарии:

1. Хорошо, спасибо за ваш ответ, но я только новичок, когда дело доходит до asp.net и MySQL, что вы имеете в виду, используют параметризованный запрос, чтобы избежать внедрения sql? Спасибо

2. вы будете изучать все эти концепции изо дня в день, не волнуйтесь, я имею в виду использование параметров, а не написание сложного запроса. Посмотрите на эту ссылку: databasejournal.com/features/mssql/article.php/3834501 /…