Deekshaa Singh Chauhan Ответов: 2

Как отобразить в grideview 2 таблицы все столбцы 1-й таблицы и 1 столбец из 2-й таблицы?


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

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

public void disp_data()
       {

            DataTable dt = new DataTable();
           {
               SqlConnection con = new SqlConnection(strcon);
               dataGridView1.DataSource = null;
               dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
               con.Open();
               SqlCommand cmd = new SqlCommand("select id,cmpny_dtl.c_name as Name,cmpny_dtl.adrs as address,cmpny_dtl.state as state,s.State as state,cmpny_dtl.c_phone as phone,cmpny_dtl.wbsit as website" + " from cmpny_dtl join State s on s.State = s.State", con);
               SqlDataAdapter da = new SqlDataAdapter(cmd);
               da.Fill(dt);
               con.Close();
               dataGridView1.ColumnCount = 9;
               dataGridView1.Columns[0].HeaderText = "id";
               dataGridView1.Columns[0].DataPropertyName = "id";
               dataGridView1.Columns[0].Visible = false;
               dataGridView1.Columns[1].HeaderText = "Name";
               dataGridView1.Columns[1].DataPropertyName = "c_name";
               dataGridView1.Columns[2].HeaderText = "address";
               dataGridView1.Columns[2].DataPropertyName = "adrs";
               dataGridView1.Columns[3].HeaderText = "GST";
               dataGridView1.Columns[3].DataPropertyName = "GST";
               //dataGridView1.Columns[3].Visible = false;
               dataGridView1.Columns[4].HeaderText = "state";
               dataGridView1.Columns[4].DataPropertyName = "State";
               //dataGridView1.Columns[4].Visible = false;
               dataGridView1.Columns[5].HeaderText = "phone";
               dataGridView1.Columns[5].DataPropertyName = "c_phone";
               dataGridView1.Columns[6].HeaderText = "website";
               dataGridView1.Columns[6].DataPropertyName = "wbsit";
               dataGridView1.Columns[7].HeaderText = "servicetax";
               dataGridView1.Columns[7].DataPropertyName = "servicetax";
               dataGridView1.Columns[8].HeaderText = "adsnldtl";
               dataGridView1.Columns[8].DataPropertyName = "adsnldtl";
               dataGridView1.DataSource = dt;
           }

       }

2 Ответов

Рейтинг:
7

Deekshaa Singh Chauhan

Это идеальный ответ,этот запуск успешно

private void DisplayData()
{
    DataTable dt = new DataTable();
    {
        dataGridView1.DataSource = null;
        dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
        con.Open();
        SqlCommand cmd = new SqlCommand("select id,p.c_name c_name,p.adrs as adrs,p.c_phone as c_phone,p.state_id as state_id,p.GST as GST,t.State as State,p.pan_no as pan_no,p.srvctax as srvctax,p.wbsit as wbsit,p.email as email,p.adsnldtl as adsnldtl,p.logo as logo from cmpny_dtl p join State t on t.State_ID = p.state_id ", con);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(dt);
        con.Close();
        dataGridView1.ColumnCount = 14;
        dataGridView1.Columns[0].HeaderText = "ID";
        dataGridView1.Columns[0].DataPropertyName = "id";
        dataGridView1.Columns[0].Visible = false;
        dataGridView1.Columns[1].HeaderText = "Name";
        dataGridView1.Columns[1].DataPropertyName = "c_name";
        dataGridView1.Columns[2].HeaderText = "adrs";
        dataGridView1.Columns[2].DataPropertyName = "adrs";
        dataGridView1.Columns[3].HeaderText = "state_id";
        dataGridView1.Columns[3].DataPropertyName = "state_id";
        dataGridView1.Columns[3].Visible = false;
        dataGridView1.Columns[4].HeaderText = "GST";
        dataGridView1.Columns[4].DataPropertyName = "GST";
        //dataGridView1.Columns[4].Visible = false;
        dataGridView1.Columns[5].HeaderText = "State";
        dataGridView1.Columns[5].DataPropertyName = "State";
        dataGridView1.Columns[6].HeaderText = "srvctax";
        dataGridView1.Columns[6].DataPropertyName = "srvctax";
        dataGridView1.Columns[7].HeaderText = "c_phone";
        dataGridView1.Columns[7].DataPropertyName = "c_phone";
        dataGridView1.Columns[8].HeaderText = "tin_no";
        dataGridView1.Columns[8].DataPropertyName = "tin_no";
        dataGridView1.Columns[8].Visible = false;
        dataGridView1.Columns[9].HeaderText = "pan_no";
        dataGridView1.Columns[9].DataPropertyName = "pan_no";
        dataGridView1.Columns[9].Visible = false;
        dataGridView1.Columns[10].HeaderText = "wbsit";
        dataGridView1.Columns[10].DataPropertyName = "wbsit";
        dataGridView1.Columns[10].Visible = false;
        dataGridView1.Columns[11].HeaderText = "email";
        dataGridView1.Columns[11].DataPropertyName = "email";
        dataGridView1.Columns[11].Visible = false;
        dataGridView1.Columns[12].HeaderText = "adsnldtl";
        dataGridView1.Columns[12].DataPropertyName = "adsnldtl";
        dataGridView1.Columns[12].Visible = false;
        dataGridView1.Columns[13].HeaderText = "logo";
        dataGridView1.Columns[13].DataPropertyName = "logo";
        dataGridView1.Columns[13].Visible = false;
        dataGridView1.DataSource = dt;
    }


}


private void dataGridView1_CellClick(object sender,ataGridViewCellEventArgs e)
{
    if (dataGridView1.CurrentRow.Index != -1)
    {

        //id =         Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value.ToString());
        CmpnyName_txt.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString();
        Adrs_txt.Text = dataGridView1.CurrentRow.Cells[3].Value.ToString();
        CmpnyPhone_txt.Text = dataGridView1.CurrentRow.Cells[4].Value.ToString();
        STATE_comboBox.SelectedValue = dataGridView1.CurrentRow.Cells[5].Value.ToString();
       GST_textBox.Text = dataGridView1.CurrentRow.Cells[6].Value.ToString();

       Email_txt.Text = dataGridView1.CurrentRow.Cells[11].Value.ToString();

       Webst_txt.Text = dataGridView1.CurrentRow.Cells[10].Value.ToString();
       Pan_txt.Text = dataGridView1.CurrentRow.Cells[8].Value.ToString();
        Tin_txt.Text = dataGridView1.CurrentRow.Cells[4].Value.ToString();
        SrvcTaxNo_txt.Text = dataGridView1.CurrentRow.Cells[9].Value.ToString();
        AdsnlDtl_txt.Text = dataGridView1.CurrentRow.Cells[12].Value.ToString();
        ////AdsnlDtl_txt.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString();

        if (dataGridView1.CurrentRow.Cells[13].Value != DBNull.Value)
        {
            byte[] img = (byte[])dataGridView1.CurrentRow.Cells[13].Value;
            MemoryStream ms = new MemoryStream(img);
            pictureBox1.Image = Image.FromStream(ms);

            Browes_btn.Text = "Remove";
        }
        else
        {
            pictureBox1.Image = null;
            Browes_btn.Text = "Browes";
        }

        SUBMIT_btn.Text = "UPDATE";
        Display_btn.Text = "RESET";
    }
}


Рейтинг:
19

RickZeeland

Вы могли бы создать View на SQL-сервере протестируйте его и используйте в качестве своего DataSource.
Использование BindingSource рекомендуется, см. Этот пример: Практическое руководство.Свойство DataSource (Системы.Окна.Формы)[^]
Кроме того, может возникнуть проблема с вашим join, взгляните здесь на пример соединения:
SQL-соединения[^]
Я думаю, что соединение должно быть таким:

from cmpny_dtl join State s on s.State = cmpny_dtl.State


Deekshaa Singh Chauhan

это не очень полезно

RickZeeland

Да, это так, но вы должны проявить некоторое усилие !
Вы пытались создать представление и сначала протестировали его ?

Deekshaa Singh Chauhan

я хочу сохранить state_id, но показать имя состояния

RickZeeland

Чтобы сделать вещи более ясными, возможно, было бы неплохо использовать SQL Server Management Studio, щелкнуть правой кнопкой мыши на ваших таблицах и выбрать пункт "Создать сценарий". Добавьте сгенерированные скрипты к вашему вопросу, наведя на него курсор мыши и выбрав пункт "улучшить вопрос".

Deekshaa Singh Chauhan

этот код работал БТ показывают только 1 строку, а то что выдает ошибку в столбце ID grideview данных



DataTable dt = новый DataTable();
{
SqlConnection con = новый SqlConnection(strcon);
dataGridView1. DataSource = null;
dataGridView1. SelectionMode = DataGridViewSelectionMode.FullRowSelect;
против.Открыть();
Команда sqlcommand cmd и = новая команда sqlcommand("выберите ID,cmpny_dtl.c_name как c_name,cmpny_dtl.АДР в АДР,cmpny_dtl.НДС как НДС,Т.Государство как государство,cmpny_dtl.srvctax как srvctax,cmpny_dtl.adsnldtl как adsnldtl,cmpny_dtl.логотип как логотип" + " от cmpny_dtl состояние присоединения т о т.State_ID = cmpny_dtl.state_id ", кон);
SqlDataAdapter da = новый SqlDataAdapter(cmd);
да.Заполнить(ДТ);
против.Закрывать();
//dataGridView1. ColumnCount = 7;
//dataGridView1.Колонки[0].HeaderText = " id";
//dataGridView1. Columns[0]. DataPropertyName = " id";
//dataGridView1.Колонки[0].Видна = ложь;
//dataGridView1.Столбцы[1].HeaderText = " c_name";
//dataGridView1. Columns[1]. DataPropertyName = " c_name";
//dataGridView1.Столбцы[2].HeaderText = " adrs";
//dataGridView1.Столбцы[2].DataPropertyName = "АДР";
//dataGridView1.Колонны[3].HeaderText = " GST";
//dataGridView1. Columns[3]. DataPropertyName = " GST";
////dataGridView1.Колонны[3].Видна = ложь;
//dataGridView1.Столбцов[4].HeaderText = " состояние";
//dataGridView1. Columns[4]. DataPropertyName = " state_id";
//dataGridView1.Столбцов[4].Видна = ложь;
//dataGridView1.Колонки[5].HeaderText = " srvctax";
//dataGridView1. Columns[5]. DataPropertyName = " srvctax";
//dataGridView1.Колонн[6].HeaderText = " adsnldtl";
//dataGridView1. Columns[6]. DataPropertyName = " adsnldtl";
dataGridView1.Источник данных = ДТ;
}






частная dataGridView1_CellClick недействительным(объект отправителя, DataGridViewCellEventArgs е)
{
если (dataGridView1.CurrentRow.Индекс != -1)
{
//если (dataGridView1.CurrentRow.Ячейки[10]. Значение != DBNull.Ценность)
//{
// байт[] ИМГ = (байт[])dataGridView1.CurrentRow.Ячейки[10]. Значение;
// MemoryStream ms = новый MemoryStream(img);
// имя picturebox1.Образ = Образ.FromStream(МС);
//}
//еще
//{
// имя picturebox1.Изображение = нуль;
//}

//id = конвертировать.ToInt32(dataGridView1.CurrentRow.Ячейки[0].Значение.Метод toString());
CmpnyName_txt.Текст = dataGridView1.CurrentRow.Клеток[2].Значение.Метод toString();
Adrs_txt.Текст = dataGridView1.CurrentRow.Клеток[3].Значение.Метод toString();
CmpnyPhone_txt.Текст = dataGridView1.CurrentRow.Клеток[8].Значение.Метод toString();
//Email_txt.Текст = dataGridView1.CurrentRow.Клеток[4].Значение.Метод toString();
//Webst_txt.Текст = dataGridView1.CurrentRow.Клеток[5].Значение.Метод toString();
//Pan_txt.Текст = dataGridView1.CurrentRow.Клеток[6].Значение.Метод toString();
//Tin_txt.Текст = dataGridView1.CurrentRow.Клеток[7].Значение.Метод toString();
SrvcTaxNo_txt.Текст = dataGridView1.CurrentRow.Клеток[6].Значение.Метод toString();
AdsnlDtl_txt.Текст = dataGridView1.CurrentRow.Клеток[7].Значение.Метод toString();
STATE_comboBox.Текст = dataGridView1.CurrentRow.Клеток[5].Значение.Метод toString();
GST_textBox.Текст = dataGridView1.CurrentRow.Клеток[4].Значение.Метод toString();
//id_txt.Текст = dataGridView1.CurrentRow.Ячейки[0].Значение.Метод toString();
SUBMIT_btn.Text = " обновить";

RickZeeland

Я бы рекомендовал сначала протестировать ваш запрос в среде SQL Server Management Studio и посмотреть, возвращает ли он больше строк.

Deekshaa Singh Chauhan

Я проверил, что это показывает только одну строку, но почему? где проблема

RickZeeland

Поскольку у меня нет доступа к вашей базе данных и нет никакой информации о ней, я не могу помочь вам дальше. Вы можете попробовать изменить свой запрос в SQL Server Management Studio и посмотреть, что произойдет, удачи !