Выбранное значение из выпадающего списка

#c# #asp.net

#c# #asp.net

Вопрос:

В настоящее время у меня есть выпадающий список, который заполняется через SqlDataSource из таблицы модулей в моей базе данных. Таблица модулей содержит 3 поля: ModuleID, ModuleName и CourseID. Вот мой код для моего выпадающего списка;

 <asp:DropDownList ID="ModuleDropDownList" 
                        style="position:absolute; top: 35px; left: 152px;" runat="server" 
                        DataSourceID="SqlDataSource2" DataTextField="ModuleName" 
                        AutoPostBack="True" 
                        >

<asp:SqlDataSource ID="SqlDataSource2" runat="server" 
                        ConnectionString="<%$ ConnectionStrings:RegisterConnectionString %>" 
                        SelectCommand="SELECT DISTINCT * FROM [Module] WHERE ([CourseID] = @CourseID)">
                        <SelectParameters>
                            <asp:ControlParameter ControlID="CourseDropDownList" Name="CourseID" 
                                PropertyName="SelectedValue" Type="Int32" />
                        </SelectParameters>

                    </asp:SqlDataSource>
  

Когда пользователь нажимает кнопку Сохранить на странице, выбранное значение в выпадающем списке записывается в другую таблицу базы данных под названием Attendance с полем ModuleID, однако проблема, с которой я сталкиваюсь, заключается в отображении всего ModuleName в выпадающем списке, но в зависимости от выбранного ModuleName он добавит соответствующий ModuleID в поле ModuleID в таблице посещаемости.
Вот мой код, который сохраняет выбранное значение из выпадающего списка в поле ModuleID в таблице посещаемости;

                 command = new SqlCommand("INSERT INTO Attendance(Present, Date, StudentID, StudentName, ModuleID) VALUES (@Attendance, @Date, @StudentID, @StudentName, @ModID)", connection);
                command.Parameters.AddWithValue("@Attendance", attendance);
                command.Parameters.AddWithValue("Date", DateTime.Now);
                command.Parameters.AddWithValue("@StudentID", StudentID);
                command.Parameters.AddWithValue("@StudentName", StudentName);
                command.Parameters.AddWithValue("@ModID", ModuleDropDownList.SelectedValue);
  

Однако поле ModuleID в таблице посещаемости имеет тип данных Int, поэтому мне нужен способ записи идентификатора модуля в таблице посещаемости на основе имени модуля, выбранного из выпадающего списка.
Любая помощь высоко ценится, заранее спасибо!

Ответ №1:

на основе вашего кода я установлю для свойства DataValueField в «ModuleDropDownList» значение «ModuleID» (или как вы это называете). Затем вы получите moduleid при обращении к свойству SelectedValue выпадающего списка.

удачи

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

1. Да, это работает нормально, но мне нужно отобразить ModuleName в выпадающем списке, а затем сохранить ModuleID на основе выбранного ModuleName, есть ли какой-либо способ сделать это? Спасибо

2. Таким образом, если вы установите DataValueField в «ModuleID», а DataTextField в «ModuleName», выпадающий список покажет modulename на вашей странице, и доступ к свойству selectedvalue вернет moduleid.