Entity Framework Datagridview Сортировка - PullRequest
0 голосов
/ 22 июня 2019

Извлекая данные из базы данных, используя приведенный ниже код, я не могу понять, как поместить извлеченные данные в сортируемое представление данных?Использование sortablebindinglist.cs

Спасибо за помощь!

Я бы с удовольствием попробовал sortablebindinglist.cs, но не могу понять, были ли они вставлены в код или как прикреплены к моемуdata.

Любая помощь будет полезной и полезной!

Данные из EF должны быть в Datagridview и могут быть отсортированы, нажав на заголовки столбцов

, но я могуне могу понять sortablebindinglist.cs и как применить его к моему коду

namespace DepotLab
{
    public partial class FrmMain : Form
    {

        FileSystemWatcher _watchFolder = new FileSystemWatcher();

        DepotTestLab db1;

        public FrmMain(string str_val1, string str_val2, string str_val3)
        {
            InitializeComponent();
            textBox1.Text = str_val1;
            textBox2.Text = str_val2;
            textBox3.Text = str_val3;
        }

        private void StartActivityMonitoring(string sPath)
        {
                _watchFolder.Path = sPath;
                _watchFolder.NotifyFilter = System.IO.NotifyFilters.DirectoryName;
                _watchFolder.NotifyFilter = _watchFolder.NotifyFilter | System.IO.NotifyFilters.FileName;
                _watchFolder.NotifyFilter = _watchFolder.NotifyFilter | System.IO.NotifyFilters.Attributes;
                _watchFolder.Changed += new FileSystemEventHandler(EventRaised);
                _watchFolder.Created += new FileSystemEventHandler(EventRaised);
                _watchFolder.Deleted += new FileSystemEventHandler(EventRaised);

            try
                {
                    _watchFolder.EnableRaisingEvents = true;
                }
                catch (ArgumentException)
                {

                }   
        }

        //private void StopActivityMonitoring()
        //{
        //    _watchFolder.EnableRaisingEvents = false;
        //}

        private delegate void AddLogText(string text);
        private void TS_AddLogText(string text)
        {
            if (this.InvokeRequired)
            {
                AddLogText del = new AddLogText(TS_AddLogText);
                Invoke(del, text);
            }
            else
            {
                Txtb1.Text += text;
            }
        }

        private void EventRaised(object sender, System.IO.FileSystemEventArgs e)
        {
            switch (e.ChangeType)
            {
                case WatcherChangeTypes.Changed:
                    TS_AddLogText(string.Format("", e.Name));

                    break;
                case WatcherChangeTypes.Created:
                    TS_AddLogText(string.Format("", e.Name));

                    break;
                case WatcherChangeTypes.Deleted:
                    TS_AddLogText(string.Format("File {0} has been deleted\r\n", e.FullPath));

                    break;
                default: // Another action
                    break;
            }
        }
        private void FrmMain_Load(object sender, EventArgs e)
        {




            Pan1.Visible = false;
            Pan2.Visible = false;
            CmbSystemType.Items.Add("DSX");
            CmbSystemType.Items.Add("DS2");




            db1 = new DepotTestLab();
            BindingSource bs = new BindingSource();
            bs.DataSource = mainBindingSource;
            db1.Configuration.ProxyCreationEnabled = false;
            db1.Configuration.LazyLoadingEnabled = false;
            mainBindingSource.DataSource = db1.Mains.Include("TestResults").ToList();

            StartActivityMonitoring(@"C:\Depot");          

            if (textBox2.Text == "User")
           {
               string ul = "User";
               Slabel1.Text = $"Current User = { textBox1.Text} { textBox3.Text } Access Level = {ul}";
               // BtnAddUser.Visible = false;
            }
            else
            {
                string ul = "Admin";
                Slabel1.Text = $"Current User = { textBox1.Text} { textBox3.Text }   " +
                    $"                        Access Level = {ul}";
                // BtnAddUser.Visible = true;

            }
            Slabel2.Text = "";
            ShowTests();
        }


        private void ShowTests()
        {
            Main obj = mainBindingSource.Current as Main;
            if (obj != null)
            {
                if (obj.TestResults != null)
                {
                    testResultBindingSource.DataSource = obj.TestResults.ToList();
                }
            }
        }

        private async void Button1_Click(object sender, EventArgs e)
        {
            try
            {
                await db1.SaveChangesAsync();

                MessageBox.Show("Your Data has been successefully saved.", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
        {
            Application.Exit();
        }

        private void CmbModuleType_SelectedIndexChanged(object sender, EventArgs e)
        {
            CmbModuleType.Text.ToString();
        }


        private void CmbSystemType_SelectedIndexChanged_1(object sender, EventArgs e)
        {
            CmbModuleType.Items.Clear();
            CmbModuleType.Text = "";

            if (CmbSystemType.SelectedIndex == 0)
            {
                CmbModuleType.Items.Add("Drawer");    //0
                CmbModuleType.Items.Add("EPOD");      //1
                CmbModuleType.Items.Add("Incubator"); //2
                CmbModuleType.Items.Add("Pipette");   //3
                CmbModuleType.Items.Add("reader");    //4
                CmbModuleType.Items.Add("SID");       //5
                CmbModuleType.Items.Add("Washer");    //6
            }
            else if (CmbSystemType.SelectedIndex == 1)
            {
                CmbModuleType.Items.Add("Pipette");    //0
                CmbModuleType.Items.Add("Reader/Incubator");     //1
                CmbModuleType.Items.Add("SID");        //2
            }

            CmbSystemType.Text.ToString();
        }

        private void CmbModuleType_SelectedIndexChanged_1(object sender, EventArgs e)
        {

            CmbTestType.Items.Clear();
            CmbTestType.Text = "";

            if (CmbModuleType.SelectedIndex == 0 && CmbSystemType.SelectedIndex == 0) //DSX Drawer
            {
                CmbTestType.Items.Add("Self Test");
                CmbTestType.Items.Add("500 Plate Cycle");
                CmbTestType.Items.Add("Pipette Check");
                CmbTestType.Items.Add("100 Plate Cycle");

            }
            else if(CmbModuleType.SelectedIndex == 1 && CmbSystemType.SelectedIndex == 0)  //DSX EPOD
            {
                CmbTestType.Items.Add("Self test");
                CmbTestType.Items.Add("200 Plate Cycle");
                CmbTestType.Items.Add("Full Pipette test with Pipette S/N");
                CmbTestType.Items.Add("10 hour 37 Degree");
                CmbTestType.Items.Add("2 Hour 50 Degree");
                CmbTestType.Items.Add("2 Hour 37 Degree");
                CmbTestType.Items.Add("1 Hour 50 Degree");
            }

            else if (CmbModuleType.SelectedIndex == 2 && CmbSystemType.SelectedIndex == 0)  //DSX Incubator
            {
                CmbTestType.Items.Add("Self Test and EPOD S/N");
                CmbTestType.Items.Add("100 Plate Cycle");
                CmbTestType.Items.Add("10 hour 37 Degree");
                CmbTestType.Items.Add("2 Hour 50 Degree");
                CmbTestType.Items.Add("2 Hour 37 Degree");
                CmbTestType.Items.Add("1 Hour 50 Degree");
            }

            else if (CmbModuleType.SelectedIndex == 3 && CmbSystemType.SelectedIndex == 0)  //DSX Pipette
            {
                CmbTestType.Items.Add("Self Test");
                CmbTestType.Items.Add("Tip Alignment");
                CmbTestType.Items.Add("Linearity");
                CmbTestType.Items.Add("100 Plate Cycle");
                CmbTestType.Items.Add("540 Level Detect");
                CmbTestType.Items.Add("1080 Level Detect");
                CmbTestType.Items.Add("625 Level Detect");
                CmbTestType.Items.Add("1250 Level Detect");
                CmbTestType.Items.Add("Jim Test");
                CmbTestType.Items.Add("Pipette Collar Cycle Test");
                CmbTestType.Items.Add("Artel Volume Verification");
            }

            else if (CmbModuleType.SelectedIndex == 4 && CmbSystemType.SelectedIndex == 0)  //DSX Reader
            {
                CmbTestType.Items.Add("Self Test");
                CmbTestType.Items.Add("Opsys MR Plate Verification");
                CmbTestType.Items.Add("100 Plate Cycle");
                CmbTestType.Items.Add("Pipette Check Plate read");
                CmbTestType.Items.Add("25 Plate Cycle");
            }

            else if (CmbModuleType.SelectedIndex == 5 && CmbSystemType.SelectedIndex == 0)  //DSX SID
            {
                CmbTestType.Items.Add("Self Test");
                CmbTestType.Items.Add("50 Cycles of Sample Rack 1");
                CmbTestType.Items.Add("50 Cycles of Sample Rack 2");
            }

            else if (CmbModuleType.SelectedIndex == 6 && CmbSystemType.SelectedIndex == 0)  //DSX Washer
            {
                CmbTestType.Items.Add("Self Test");
                CmbTestType.Items.Add("Washer calibration");
                CmbTestType.Items.Add("100 Plate Cycle");
                CmbModuleType.Items.Add("25 Plate Cycle");
            }

            else if (CmbModuleType.SelectedIndex == 0 && CmbSystemType.SelectedIndex == 1)  //DS2 Pipette
            {
                CmbTestType.Items.Add("Toolbox Self Test");
                CmbTestType.Items.Add("Matrix Self Test");
                CmbTestType.Items.Add("Artel");   
            }

            else if (CmbModuleType.SelectedIndex == 1 && CmbSystemType.SelectedIndex == 1)  //DS2 Reader/Incubator
            {
                CmbTestType.Items.Add("Toolbox Self Test");
                CmbTestType.Items.Add("Matrix Self Test");
                CmbTestType.Items.Add("Reader Top Test");
                CmbTestType.Items.Add("Reader Bottom Test");
                CmbTestType.Items.Add("Incubator Top Test");
                CmbTestType.Items.Add("Incubator Bottom Test");
            }

            else if (CmbModuleType.SelectedIndex == 2 && CmbSystemType.SelectedIndex == 1)  //DS2 SID
            {
                CmbTestType.Items.Add("Toolbox Self Test");
                CmbTestType.Items.Add("Matrix Self Test");
                CmbTestType.Items.Add("Scan Test");
            }

            CmbModuleType.Text.ToString();
            CmbTestType.Items.ToString();

        }
        private void BtnADDNew_Click(object sender, EventArgs e)
        {

            Pan1.Visible = true;
            TxtSerial.Focus();
            Main c = new Main();
            db1.Mains.Add(c);
            mainBindingSource.Add(c);
            mainBindingSource.MoveLast();

        }

        private void BtnAddTest_Click(object sender, EventArgs e)
        {
            Pan2.Visible = true;
            Main c = mainBindingSource.Current as Main;
            if (c != null)
            {
                if (testResultBindingSource.DataSource == null)
                    testResultBindingSource.DataSource = c.TestResults.ToList();
                TestResult a = new TestResult() { Main = c };
                testResultBindingSource.Add(a);
                testResultBindingSource.MoveLast();
                db1.TestResults.Add(a);
                TxtWorkOrder.Focus();
            }
        }

        private void Button1_Click_1(object sender, EventArgs e)
        {
            Pan1.Visible = true;
            Pan2.Visible = true;

        }

        private void TxtSearch_KeyPress(object sender, KeyPressEventArgs e)
        {

            if (e.KeyChar == (char)13)
            {
                if (string.IsNullOrEmpty(TxtSearch.Text))
                {

                    mainBindingSource.DataSource = db1.Mains.Include("TestResults").ToList();                  
                    ShowTests();
                }
                else
                {

                    if (RbSerialNumber.Checked == true)
                    {
                        var query = from o in db1.Mains.Include("TestResults")
                                    where o.SerialNumber.Contains(TxtSearch.Text)
                                    select o;

                        mainBindingSource.DataSource = query.ToList();
                        ShowTests();

                    }
                    else
                    {
                        var query = from o in db1.Mains.Include("TestResults")
                                    where o.SystemType.Contains(TxtSearch.Text)
                                    select o;

                        mainBindingSource.DataSource = query.ToList();
                        ShowTests();
                        RbSerialNumber.Checked = true;

                    }
                }
            }
            else
            {

                mainBindingSource.DataSource = db1.Mains.Include("TestResults").ToList();
                ShowTests();

            }

        }

        private void DgvMain_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0)
            {
                ShowTests();
            }
        }

        private void Button2_Click(object sender, EventArgs e)
        {
            TxtSearch.Text = "";
            mainBindingSource.DataSource = db1.Mains.Include("TestResults").ToList();
            ShowTests();

        }

    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...