Dana.S Ответов: 2

Как привязать dropdownlist в detailsview к другой таблице


Я новичок в этом деле asp.net и мне нужна помощь, пожалуйста. Я использую c# и sql.

Я хочу сделать следующее: У меня есть представление сведений, где я могу использовать его для добавления сотрудников и сохранения в своей базе данных в таблице сотрудников. В представлении сведений я создал поле шаблона для dept_id (это поле является внешним ключом). Я хочу сделать его в виде выпадающего списка, где вы можете выбрать название отдела (которое находится в таблице отдела) вместо ввода идентификатора отдела. Я очень в этом заинтересован. Любая помощь будет оценена по достоинству.

Это и есть .aspx
<asp:TemplateField HeaderText="Dept_id" SortExpression="Dept_id">
    <EditItemTemplate>
        <asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="ddlSqlDataSource"
        DataTextField="dept_name" DataValueField="dept_id" SelectedValue='<%# Bind("dept_id") %>'>
        </asp:DropDownList>
    </EditItemTemplate>


    <InsertItemTemplate>
        <asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="ddlSqlDataSource"
        DataTextField="dept_name" DataValueField="dept_id" SelectedValue='<%# Bind("dept_id") %>'>
        </asp:DropDownList>
    </InsertItemTemplate>
    <ItemTemplate>
        <asp:Label ID="Label5" runat="server" Text='<%# Bind("Dept_id") %>'></asp:Label>
    </ItemTemplate>
</asp:TemplateField>


Я не уверен, что мне следует писать внутри элемента управления dropdownlist и что писать в его SqlDataSource (ddlSqlDataSource)

<asp:SqlDataSource ID="ddlSqlDataSource" runat="server" 

                ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 

                SelectCommand="SELECT [dept_name] FROM [Department]">
            </asp:SqlDataSource>


Может ли кто-нибудь помочь, пожалуйста!
Заранее спасибо.

----------

Проблемы Решены!
Спасибо всем!

Вот модифицированный код:

<asp:TemplateField HeaderText="Dept_id" SortExpression="Dept_id">
                          <ItemTemplate>
                          <%#Eval("dept_id") %>
                          </ItemTemplate>

                           <InsertItemTemplate>
                               <asp:DropDownList ID="ddlDept" runat="server" DataSourceID="ddlSqlDataSource"
                               DataTextField="dept_name" DataValueField="dept_id" SelectedValue='<%# Bind("Dept_id") %>'>
                               </asp:DropDownList>
                                <asp:SqlDataSource ID="ddlSqlDataSource" runat="server"
                  ConnectionString="<%$ ConnectionStrings:ConnectionString %>"

                   SelectCommand="SELECT dept_id, dept_name FROM Department ">

               </asp:SqlDataSource>
                           </InsertItemTemplate>
                           <ItemTemplate>
                               <asp:Label ID="Label5" runat="server" Text='<%# Bind("Dept_id") %>'></asp:Label>
                           </ItemTemplate>
                       </asp:TemplateField>


И я добавил их к строкам кода позади:

protected void DetailsView2_DataBound(object sender, EventArgs e)
        {
            DropDownList ddlDept = (DropDownList)DetailsView2.FindControl("ddlDept");

            ddlDept.Items.Insert(0, new ListItem("Select department"));

        }

Gokulprasad05

у вас есть две разные таблицы: одна-таблица сотрудников, а другая-таблица отделов.. какое значение вы хотите привязать в выпадающем списке

Dana.S

Я хочу привязать таблицу department , чтобы я мог выбрать имя отдела из выпадающего списка, а затем сохранить dept_id в таблице employee на основе выбранного имени. Это понятно ?

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Теперь dropddownlist становится связанным или нет?

Dana.S

Нет это не так

Gokulprasad05

анализ обеих таблиц, любое из имен столбцов или значений gid должно быть одинаковым для обеих таблиц в вашей БД. Затем положите левое соединение

Dana.S

Спасибо за заботу.
Извините, если это глупый вопрос (я все еще новичок), должен ли я поместить левое соединение в команду select источника данных?

Gokulprasad05

затем свяжите поле datasource,datamember,datatextfield &datavalue и свяжите значение в выпадающем списке, а затем утилизируйте его..

Gokulprasad05

выберите b.department_code,b.department_name,c.user_firstname из hrm_mst_temployee a
слева присоединяйтесь к hrm_mst_tdepartment b на a.department_gid = b.department_gid
слева присоединяйтесь к adm_mst_tuser c на a.user_gid = c.user_gid
где a.employee_gid=";

Dana.S

Большое спасибо. Я постараюсь выполнить то, что вы сказали, и вернусь.
Спасибо снова.

Gokulprasad05

Сначала спланируйте и выполните кодирование.. Удачи.

Dana.S

Большое спасибо!
Проблема решена

Gokulprasad05

Дидактическая проблема ура полностью решена ...

Dana.S

Да :)

2 Ответов

Рейтинг:
2

Member 12797945

Вместо того чтобы писать код, я изменил SQL источника данных, который заполняет выпадающий список, позволяя мне либо выбрать, либо очистить значение.

Команды selectcommand="выбрать null как dept_id, в, null как dept_name Союза выберите dept_id, в, dept_name отдела "


Рейтинг:
19

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Вы можете попробовать технику привязки выпадающего списка в DataBound[^] Событие. Ссылаться - Связать dropdownlist в шаблон itemtemplate объекта в ASP.Net GridView в[^]. Посмотрите, как dropdownlist привязан внутри RowDataBound Событие GridView. Вам нужно сделать что-то подобное.


Dana.S

Большое спасибо за ваш ответ.
На самом деле я уже видел эту ссылку раньше и пытался ее реализовать. Однако я застрял с этой частью:

если (электронная.Подряд.RowType == DataControlRowType.Строкаданных)

Я не знаю, как применить это для просмотра деталей.
У тебя есть какие-нибудь идеи?

Спасибо снова. Ценю ваш ответ.

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Эта проверка на самом деле не требуется. Вы можете начать непосредственно с FindControl.

Также выполните этот запрос в Sql Studio, чтобы проверить, правильно ли он возвращает какую-либо запись или нет.

Вы можете проверить другой блог, который использует SqlDataSource - Привязка элемента управления detailsview с dropdownlist для контроля.

Dana.S

Большое спасибо!
Я решил эту проблему, и теперь она работает нормально!
Ссылки были так полезны!
Я опубликовал код после внесения изменений.
Большое спасибо. Ценю вашу помощь!

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Отличный. Поздравляю !!! :)