Member 13863605 Ответов: 2

Связывание моего столбца из таблицы на сервере MSSQL с выпадающим списком в ASP.NET


У меня есть таблица "employee" на сервере MSSQL, и я хочу извлечь столбец "employee position" из этой таблицы в раскрывающийся список в Visual Studio in Asp.Net. Поэтому, когда пользователь нажимает на раскрывающийся список, данные из таблицы извлекаются непосредственно и отображаются в раскрывающемся списке.

Что я уже пробовал:

Я могу редактировать и вручную помещать данные в раскрывающийся список, но в моей таблице есть около 60 строк для этого столбца. Поэтому мне было интересно, есть ли способ получить эти данные непосредственно из MSSQL, не помещая их вручную в раскрывающийся список.

Swinkaran

Я оставил решение ниже. Это использование Asp.Net способ работы MVC. Не уверен, что вы работаете с веб-формами.

2 Ответов

Рейтинг:
1

Swinkaran

Вы можете использовать MVC-ы SelectListItem Дополнительную информацию можно найти в разделе : Выпадающие списки и ASP.NET MVC[^]

HomeController.в CS

public class HomeController : Controller
   {
       public ActionResult Index()
       {
           EmployeeModel model = new EmployeeModel();
           model.Positions = ReadData();
           return View();
       }

       [NonAction]
       private static List<SelectListItem> ReadData()
       {
           List<SelectListItem> Positions = new List<SelectListItem>();
           string ConnString = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;
           using (SqlConnection connection = new SqlConnection(ConnString))
           {
               string query = "SELECT [DepartmentId] ,[Name] FROM[EmployeeTst].[dbo].[TblDepartment]";
               using (SqlCommand cmd = new SqlCommand(query))
               {
                   cmd.Connection = connection;
                   connection.Open();
                   using (SqlDataReader reader = cmd.ExecuteReader())
                   {
                       while (reader.Read())
                       {
                           Positions.Add(new SelectListItem
                           {
                               Text = reader["DepartmentId"].ToString(),
                               Value = reader["Name"].ToString()
                           });
                       }
                   }
                   connection.Close();
               }
           }

           return Positions;
       }
   }

Индекс.cshtml по
@model MVC.Models.EmployeeModel
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
    <table>
        <tr>
            <td>
                @Html.DropDownListFor(p => p.EmployeeId, Model.Positions, "Please select")
            </td>
        </tr>
    </table>
}


Рейтинг:
0

Swinkaran

Это и есть то самое Asp.Net способ работы в веб-форме,

Умолчанию.aspx-файл

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="DDList_Demo._Default" %>

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
    <div class="row">
        <div class="col-md-4">
            <h2>Positions</h2>
            <p>
                <asp:DropDownList ID="ListPosition" runat="server">
                </asp:DropDownList>
            </p>
        </div>
    </div>
</asp:Content>


Умолчанию.aspx-файл.в CS
public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Dictionary<String, String> Positions = ReadData();

                ListPosition.DataSource = Positions;
                ListPosition.DataTextField = "Value";
                ListPosition.DataValueField = "Key";
                ListPosition.DataBind();
            }
        }

        private static Dictionary<String, String> ReadData()
        {
            Dictionary<String, String> Positions = new Dictionary<string, string>();
            string ConnString = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;
            using (SqlConnection connection = new SqlConnection(ConnString))
            {
                string query = "SELECT [EmployeeId] ,[Position] FROM[EmployeeDb].[dbo].[TblEmployees]";
                using (SqlCommand cmd = new SqlCommand(query))
                {
                    cmd.Connection = connection;
                    connection.Open();
                    using (SqlDataReader sdr = cmd.ExecuteReader())
                    {
                        while (sdr.Read())
                        {
                            Positions.Add(sdr["EmployeeId"].ToString(), sdr["Position"].ToString());
                        }
                    }
                    connection.Close();
                }
            }

            return Positions;
        }
    }
}


Richard Deeming

Вот в чем дело старый Форм способом. :)

Новый способ будет заключаться в использовании привязка модели[^]:

<asp:DropDownList ID="ListPosition" runat="server"
    DataTextField="Value"
    DataValueField="Key"
    SelectMethod="ReadData"
/>
public Dictionary<string, string> ReadData() { ... }