none
Как в С# связать StatusBar из DataGridView? RRS feed

Ответы

  • Если вам нужно показывать что добавили 1 запись то 

    private void addNewDebitorToolStripMenuItem_Click(object sender, EventArgs e)
            {
                NewDebitor newDebitor = new NewDebitor();
    
                if (newDebitor.ShowDialog() == DialogResult.OK)
                {
                    MessageBox.Show("Новый дебитор записан в базу данных",
                        "Bank manager", MessageBoxButtons.OKCancel);
    
                    dgv_Debitors.DataSource = dal.GetAllDebitors(); // Обновляем поле Debitors
    
    //Сюда добавить отображение "Добавленна 1 запись" в статус бар
                }
                else
    
                    MessageBox.Show("Новый дебитор  не был записан в базу данных",
                         "Bank manager", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
            }

    либо если нужно количество записей то

    private void addNewDebitorToolStripMenuItem_Click(object sender, EventArgs e)
            {
                NewDebitor newDebitor = new NewDebitor();
    
                if (newDebitor.ShowDialog() == DialogResult.OK)
                {
                    MessageBox.Show("Новый дебитор записан в базу данных",
                        "Bank manager", MessageBoxButtons.OKCancel);
    ArrayList list = dal.GetAllDebitors();
    // тут вывести на StatusBar значение list.Count
                    dgv_Debitors.DataSource = list  // Обновляем поле Debitors
                }
                else
    
                    MessageBox.Show("Новый дебитор  не был записан в базу данных",
                         "Bank manager", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
            }


    • Изменено Brash_O 21 июня 2012 г. 14:42
    • Помечено в качестве ответа Иван Лукашов 25 июня 2012 г. 16:29
    21 июня 2012 г. 14:41
  • toolStripStatusLabel1.Text = "Количество записей в БД:" + list.Count;
    25 июня 2012 г. 16:23

Все ответы

  • Добрый день.

    Не очень понятна задача, но если вы хотите показывать в StatusBar сумму некоторого столбца, то вам придется в том месте, где вы присваетеваете источник данных для DataGridView ее вычислить и записать в ваш StatusBar.

    21 июня 2012 г. 13:31
    Отвечающий
  • Если в роли DataSource вы используете DataTable то можете воспользоваться методом Compute

    var sumObject = table.Compute("Sum(Total)", "");

    http://msdn.microsoft.com/en-us/library/system.data.datatable.compute.aspx

    правда вам придется пересчитывать результат каждый раз как будут изменяться данные

    так же можно посчитать сумме при помощи LINQ


    var sum = table.Sum(x=>x.SomeProperty); 

    • Изменено Brash_O 21 июня 2012 г. 13:56
    • Предложено в качестве ответа Naomi N 25 июня 2012 г. 14:35
    21 июня 2012 г. 13:51
  • Добрый день.

    Не очень понятна задача, но если вы хотите показывать в StatusBar сумму некоторого столбца, то вам придется в том месте, где вы присваетеваете источник данных для DataGridView ее вычислить и записать в ваш StatusBar.

     

    У меня есть база данных,  в ней есть таблицы Debitors, Credits, Payments, я хочу сделать следующие когда я добавляю в базу данных о новом дебиторе в StatusBar , выводилась запись в базе данных 1 запись.

    вод код программы DAL работает из базой данных:

                                                                                                                                                                                        

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Collections;
    using System.Data.SqlClient;
    using System.Data.Common;


    namespace BANK
    {
        class DAL
        {
            // Строка соединения
            string connectionString = @"Data Source=ОЛЕГ-ПК\SQLEXPRESS;Initial Catalog=BANK;Integrated Security=True"; // если доступ к БД происходит с пользователскими правами, нужно указать uid=NameUser; pwd=указать пароль


            public ArrayList GetAllDebitors() // Метод возращение  данные с таблицы Debitors
            {
                ArrayList allDebitors = new ArrayList();

                //Настройка обьекта соединения (I)

                using (SqlConnection con = new SqlConnection(connectionString))

                //Создания и настройка обьекта команди (II)
                {
                    SqlCommand com = new SqlCommand("SELECT * FROM Debitors Order By Name", con);

                    // Открываем подключение к базе данных
                    try
                    {
                        con.Open();

                        // Метод для команды com (III)

                        SqlDataReader dr = com.ExecuteReader();

                        if (dr.HasRows) // Проверяем найменованее в таблицы хоть одной записи

                            foreach (DbDataRecord result in dr)
                                allDebitors.Add(result);
                    }
                    catch
                    { 


                    }
                }
                return allDebitors;
            }


            internal object GetAllCreditsForDebitor(string debitorID) // Метод Связи dgv_Debitor (родительского) и dgv_Credit(дочернего)
            {
                ArrayList allCredits = new ArrayList();

                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    string query = String.Format("SELECT * FROM Credits Where DebitorID= '{0}' Order By OpenData", debitorID);

                    SqlCommand com = new SqlCommand(query, con);

                     try
                    {
                        con.Open();

                        SqlDataReader dr = com.ExecuteReader();

                        if (dr.HasRows)

                            foreach (DbDataRecord result in dr)
                              allCredits.Add(result);
                    }
                    catch
                    { 


                    }
                }
                return allCredits;

                }

            internal object GetAllPaymentsForCredit(string CreditID) // Метод связи dgv_Credits с dgv_Payments
            {
                ArrayList allPayments = new ArrayList();

                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    string query = String.Format("SELECT * FROM Payments Where CreditID= '{0}'Order By PaymentData", CreditID);

                    SqlCommand com = new SqlCommand(query, con);

                    try
                    {
                        con.Open();

                        SqlDataReader dr = com.ExecuteReader();

                        if (dr.HasRows)

                            foreach (DbDataRecord result in dr)
                                allPayments.Add(result);
                    }
                    catch
                    {


                    }
                }
                return allPayments;
            }

                public bool SeveNewDebitor(string ID, string Name, string PostNamber, string PhoneNamber)  // Метод добавления нового дебитора в БД
            {
                bool comResult = false;

                string query = string.Format ("INSERT INTO Debitors"+
                    "([ID], [Name], [PostNamber], [PhoneNamber]) "+ 
                    "VALUES ('{0}','{1}','{2}','{3}')", ID, Name, PostNamber, (PhoneNamber != String.Empty ? PhoneNamber : null));

                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    SqlCommand com = new SqlCommand(query, con);
                    try
                    {
                        con.Open();
                        if (com.ExecuteNonQuery() == 1) // Передача новых записей в БД  

                           comResult = true;
                    }
                    catch 
                    {

                    }

                }
                return comResult;
            }

                public bool DeleteDebitors(Guid ID) // Метод удалющмй дебитора из БД 
               {
                bool DelResult = false;
                string queryDel = string.Format("DELETE FROM Debitors" +
                        " WHERE ID = '{0}'", ID);
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    SqlCommand com = new SqlCommand(queryDel, con);
                    try
                    {
                        con.Open();
                        if (com.ExecuteNonQuery() == 1)
                            DelResult = true;
                    }
                    catch
                    {


                    }
                }
                return DelResult;
            }
        }
    }

    код главной формы MainForm: 

    sing System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Collections;

    namespace BANK
    {
        public partial class MainForm : Form
        {
            DAL dal = new DAL(); // Клас DAL работает с базой данных 

            public MainForm()
            {
                InitializeComponent();

                ArrayList allDebitors = dal.GetAllDebitors();


                dgv_Debitors.DataSource = allDebitors;

                SettingsDGV_Debitors();
            }

            void SettingsDGV_Debitors() // Метод отвичающий за настройки Data Grid View Debitors
            {
                try
                {
                    dgv_Debitors.Columns["ID"].Visible = false;
                    dgv_Debitors.Columns["PostNamber"].Visible = false;
                    dgv_Debitors.Columns["PhoneNamber"].Visible = false;
                }
                catch
                {

                }
            }

            private void dgv_Debitors_CellEnter(object sender, DataGridViewCellEventArgs e) // Метод связи TextBox с DataGridVew
            {
                txbx_DebitorID.Text = dgv_Debitors.Rows[e.RowIndex].Cells["ID"].Value.ToString();
                txbx_DebitorName.Text = dgv_Debitors.Rows[e.RowIndex].Cells["Name"].Value.ToString();
                txbx_DebitorPostNamber.Text = dgv_Debitors.Rows[e.RowIndex].Cells["PostNamber"].Value.ToString();

                string phone = dgv_Debitors.Rows[e.RowIndex].Cells["PhoneNamber"].Value.ToString();
                txbx_PhoneNamber.Text = (phone == String.Empty) ? "Нет телефона" : phone;

                // Связь dgv_Debitor (родительского) и dgv_Credit(дочернего)

                dgv_Credits.DataSource = dal.GetAllCreditsForDebitor(dgv_Debitors.Rows[e.RowIndex].Cells["ID"].Value.ToString());
            }

            private void MainForm_Load(object sender, EventArgs e)
            {
                dgv_Debitors.CellEnter += new DataGridViewCellEventHandler(dgv_Debitors_CellEnter); // Подписываемся на события CellEnter для dgv_Debitors
                dgv_Credits.CellEnter += new DataGridViewCellEventHandler(dgv_Credits_CellEnter);  // Подписываемся на события CellEnter для dgv_Debitors

            }

            void dgv_Credits_CellEnter(object sender, DataGridViewCellEventArgs e) // Метод связи dgv_Credits с dgv_Payments
            {
                string CreditID = dgv_Credits.Rows[e.RowIndex].Cells["ID"].Value.ToString();
                dgv_Payments.DataSource = dal.GetAllPaymentsForCredit(CreditID);
            }



            //Закрытие формы

            private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
            {
                if (MessageBox.Show("Вы дествительно желаете закрыть данное приложение?", "Bank manager", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)

                    e.Cancel = false;

                else

                    e.Cancel = true;
            }

            private void exitToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Application.Exit();
            }

            private void addNewDebitorToolStripMenuItem_Click(object sender, EventArgs e)
            {
                NewDebitor newDebitor = new NewDebitor();

                if (newDebitor.ShowDialog() == DialogResult.OK)
                {
                    MessageBox.Show("Новый дебитор записан в базу данных",
                        "Bank manager", MessageBoxButtons.OKCancel);

                    dgv_Debitors.DataSource = dal.GetAllDebitors(); // Обновляем поле Debitors
                }
                else

                    MessageBox.Show("Новый дебитор  не был записан в базу данных",
                         "Bank manager", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
            }


         private void deleteDebitorToolStripMenuItem_Click(object sender, EventArgs e)
        {
        if (MessageBox.Show("Вы действительно хотите удалить запись?", "Внимание", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
        {
        if (dgv_Debitors.SelectedRows.Count != 0)
        {
            DAL dal = new DAL();
            foreach (DataGridViewRow item in dgv_Debitors.SelectedRows)
            {
                if (!dal.DeleteDebitors((Guid)item.Cells[0].Value))
                {
                    MessageBox.Show("Ошибка удаления дебитора из Базы данных, иметтся кредит!!!! ", "Bank   manager",
                                 MessageBoxButtons.OKCancel, MessageBoxIcon.Error);
                    //MessageBox.Show("Ошибка удаления строки " + (string)item.Cells[0].Value);
                }
             }
          }
        }
      }
     }
    }



    21 июня 2012 г. 13:56
  • Если вам нужно показывать что добавили 1 запись то 

    private void addNewDebitorToolStripMenuItem_Click(object sender, EventArgs e)
            {
                NewDebitor newDebitor = new NewDebitor();
    
                if (newDebitor.ShowDialog() == DialogResult.OK)
                {
                    MessageBox.Show("Новый дебитор записан в базу данных",
                        "Bank manager", MessageBoxButtons.OKCancel);
    
                    dgv_Debitors.DataSource = dal.GetAllDebitors(); // Обновляем поле Debitors
    
    //Сюда добавить отображение "Добавленна 1 запись" в статус бар
                }
                else
    
                    MessageBox.Show("Новый дебитор  не был записан в базу данных",
                         "Bank manager", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
            }

    либо если нужно количество записей то

    private void addNewDebitorToolStripMenuItem_Click(object sender, EventArgs e)
            {
                NewDebitor newDebitor = new NewDebitor();
    
                if (newDebitor.ShowDialog() == DialogResult.OK)
                {
                    MessageBox.Show("Новый дебитор записан в базу данных",
                        "Bank manager", MessageBoxButtons.OKCancel);
    ArrayList list = dal.GetAllDebitors();
    // тут вывести на StatusBar значение list.Count
                    dgv_Debitors.DataSource = list  // Обновляем поле Debitors
                }
                else
    
                    MessageBox.Show("Новый дебитор  не был записан в базу данных",
                         "Bank manager", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
            }


    • Изменено Brash_O 21 июня 2012 г. 14:42
    • Помечено в качестве ответа Иван Лукашов 25 июня 2012 г. 16:29
    21 июня 2012 г. 14:41
  • Если вам нужно показывать что добавили 1 запись то 

    private void addNewDebitorToolStripMenuItem_Click(object sender, EventArgs e)
            {
                NewDebitor newDebitor = new NewDebitor();
    
                if (newDebitor.ShowDialog() == DialogResult.OK)
                {
                    MessageBox.Show("Новый дебитор записан в базу данных",
                        "Bank manager", MessageBoxButtons.OKCancel);
    
                    dgv_Debitors.DataSource = dal.GetAllDebitors(); // Обновляем поле Debitors
    
    //Сюда добавить отображение "Добавленна 1 запись" в статус бар
                }
                else
    
                    MessageBox.Show("Новый дебитор  не был записан в базу данных",
                         "Bank manager", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
            }

    либо если нужно количество записей то

    private void addNewDebitorToolStripMenuItem_Click(object sender, EventArgs e)
            {
                NewDebitor newDebitor = new NewDebitor();
    
                if (newDebitor.ShowDialog() == DialogResult.OK)
                {
                    MessageBox.Show("Новый дебитор записан в базу данных",
                        "Bank manager", MessageBoxButtons.OKCancel);
    ArrayList list = dal.GetAllDebitors();
    // тут вывести на StatusBar значение list.Count
                    dgv_Debitors.DataSource = list  // Обновляем поле Debitors
                }
                else
    
                    MessageBox.Show("Новый дебитор  не был записан в базу данных",
                         "Bank manager", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
            }


    1.

    //Сюда добавить отображение "Добавленна 1 запись" в статус бар

    как его туда добавить покажите пример кода пожалуйста?

    2.Извините за глупый вопрос, а как вывести на StatusBar list.Count?
    21 июня 2012 г. 15:09
  • На форме располагается StatusStrip с элементом ToolStripStatusLabel

    далее надо присвоить ему любой текст

    toolStripStatusLabel1.Text = "Тут будет текст";

    соответственно можно выводить абсолютно любой текст

    http://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripitem.text.aspx

    • Предложено в качестве ответа Naomi N 25 июня 2012 г. 14:35
    22 июня 2012 г. 5:30
  • После решения проблемы, не забудьте отметить ответ, который решает вашу проблему или помог с решением. Спасибо.


    Для связи [mail]

    22 июня 2012 г. 6:52
  • На форме располагается StatusStrip с элементом ToolStripStatusLabel

    далее надо присвоить ему любой текст

    toolStripStatusLabel1.Text = "Тут будет текст";

    соответственно можно выводить абсолютно любой текст

    http://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripitem.text.aspx

    Извините, ну не чего не понял, я спрашивал  как вывести на StatusBar значение list.Count 
    ArrayList list = dal.GetAllDebitors();
    // тут вывести на StatusBar значение list.Count
    25 июня 2012 г. 14:32
  • toolStripStatusLabel1.Text = "Количество записей в БД:" + list.Count;
    25 июня 2012 г. 16:23
  • toolStripStatusLabel1.Text = "Количество записей в БД:" + list.Count;

    Спасибо большое, а как понять вот это  с элементом ToolStripStatusLabe?l 

    Я все нашел всем спасибо

    25 июня 2012 г. 16:32