Member 13338075 Ответов: 2

Получить информацию в combobox из процедуры хранения в C#


Я хочу отобразить имя сотрудника из процедуры хранения в форме окна C# и получить доступ к идентификатору сотрудника в выпадающем списке. Я написал процедуру магазина, чтобы получить информацию о сотруднике
Create Procedure Get_Employee_Info
AS
Declare @Error Int

SELECT Employee_Id
,      EmployeeName
FROM   Employee

 SELECT @Error = @@error  
 RETURN @Error


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

Когда я запускаю EXEC Get_Employee, я получаю информацию, и я не знаю, как отобразить данные в combobox.Пожалуйста, веди меня.

2 Ответов

Рейтинг:
2

an0ther1

Для этого вы должны привязать данные как DataTable к элементу управления, а затем установить свойства DisplayMember &valuemember, как показано ниже;

DataTable dtEmployee;
using(SqlConnection connDb = new SqlConnection(ConnectionString))
{
    conn.Open();
    using(SqlCommand cmd = conn.CreateCommand())
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "Get_Emplyee_Info";
        using(SqlDataAdapter adap = new SqlDataAdapter(cmd))
        {
            adap.Fill(dtEmployee);
        }
    }
    conn.Close();
}
comboBox1.DataSource = dtEmployee;
comboBox1.DisplayMember = "EmployeeName";
comboBox1.ValueMember = "Employee_Id";
// complete


с уважением


Member 13338075

В моем классе сотрудников я написал код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Threading.Tasks;
using System.Data.Sql;
using System.Data.SqlClient;
using DataAccess;

namespace Employee.class
{
    class Employee
    {
        DataOperation DataProcessor = new DataOperation();

        private static Employee objEmployee = null;
        const string SP_Get_Employee= "Get_Employee";


        private Employee()
        { }

        public static Township GetEmployee()
        {
            if (Employee.objEmployee == null) return Employee.objEmloyee = new Employee();
            else return Employee.objEmployee;
        }

        public DataTable GetAllEmployee()
        {
            DataTable dt = this.DataProcessor.GetDataTable(Employee.SP_Get_Employee);
            return dt;
        }

    }
}


Рейтинг:
2

Manoj S Pant

У вас есть процедура хранения "Get_employee_Info" в базе данных,
Сейчас
Первый, вам нужно получить данные из этой хранимой процедуры в C#.
Второй, вам нужно связать поле со списком с таблицей данных, установив "Datasource","DataMember" и "ValueMamber".

Шаги 1: Получить данные в C# из процедуры хранения:

Copy from this link: 
https://blogs.msmvps.com/deborahk/dal-retrieve-a-datatable-using-a-stored-procedure/

Public DataTable ExecuteDataTable(string storedProcedureName,  
                                     params SqlParameter[] arrParam)  
{ 
    DataTable dt = new DataTable();

    // Open the connection 
    using (SqlConnection cnn = new SqlConnection( 
           "Data Source=.\sqlexpress;Initial Catalog=AcmeRentals; 
                                    Integrated Security=True")) 
    { 
        cnn.Open();

        // Define the command 
        using (SqlCommand cmd = new SqlCommand()) 
        { 
            cmd.Connection = cnn; 
            cmd.CommandType = CommandType.StoredProcedure; 
            cmd.CommandText = storedProcedureName;

            // Handle the parameters 
            if (arrParam != null) 
            { 
                foreach (SqlParameter param in arrParam) 
                    cmd.Parameters.Add(param); 
            }

            // Define the data adapter and fill the dataset 
            using (SqlDataAdapter da = new SqlDataAdapter(cmd)) 
            { 
                da.Fill(dt); 
            } 
        } 
    } 
    return dt; 
} 




Шаги 2: свяжите таблицу данных, которую мы получаем из хранимой процедуры, со списком.

// Get the data from SP.
DataTable empployeeTable = Dac.ExecuteDataTable("Get_Employee_Info", null);

 // bind employee data table into combo box.
 comboBoxEmployee.DataSource = empployeeTable;
 comboBoxEmployee.DisplayMember = "EmployeeName";
 comboBoxEmployee.ValueMember = "Employee_Id";


Member 13338075

В моем классе сотрудников я писал примерно так

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Threading.Tasks;
using System.Data.Sql;
using System.Data.SqlClient;
using DataAccess;

namespace Employee.class
{
    class Employee
    {
        DataOperation DataProcessor = new DataOperation();

        private static Employee objEmployee = null;
        const string SP_Get_Employee= "Get_Employee";


        private Employee()
        { }

        public static Township GetEmployee()
        {
            if (Employee.objEmployee == null) return Employee.objEmloyee = new Employee();
            else return Employee.objEmployee;
        }

        public DataTable GetAllEmployee()
        {
            DataTable dt = this.DataProcessor.GetDataTable(Employee.SP_Get_Employee);
            return dt;
        }

    }
}


Как я могу привязать данные к combobox?