C#.NET

  • Креатор на темата Креатор на темата back_rest
  • Време на започнување Време на започнување
Добро, ќе пробам со DataGridView. Треба во ќелиите да има како во ексел опција за паѓачко мени = comboBox

Ако се одлучиш за користење на DataGridView колоните можеш да ги правиш со визуелниот едитор (десен клик на DataGridView > Properties > Collection) и тука можеш да додаваш колони со TextBox, Button ComboBox, да местиш Enabled = true or false итн итн... а можеш и да го искодираш DataGridView-от... вака некако би му дошло (еден пример јас што имам користено)...

Код:
DataGridViewComboBoxColumn cmbBox = null; // Декларираш ComboBox

// Функција за сетирање на DataGridView
private void loadDataGrid(string QString)
        {
            OleDbCommand SQLQuery = new OleDbCommand();
            DataTable data = null;
            theList.DataSource = null;
            SQLQuery.Connection = null;
            OleDbDataAdapter dataAdapter = null;
            theList.Columns.Clear(); // <-- Чистење на колоните
            //---------------------------------
            SQLQuery.CommandText = QString;
            SQLQuery.Connection = database;
            data = new DataTable();
            dataAdapter = new OleDbDataAdapter(SQLQuery);
            dataAdapter.Fill(data);
            theList.DataSource = data;
            theList.AllowUserToAddRows = false; // Бришење на NULL линијата
            theList.ReadOnly = true;

            // Колона 1
            theList.Columns[0].Visible = false; // Да не се прикажува
            theList.Columns[0].Name = "ID"; // ID = првата колона во базата на податоци

            // Колона 2
            theList.Columns[1].Width = 330;
            theList.Columns[1].HeaderText = "Име на хеадер текстот";

            // Колона 3
            theList.Columns[2].Width = 360;
            theList.Columns[2].HeaderText = "Име на хеадер текстот";

            // Колона 4
            theList.Columns[3].Width = 150;
            theList.Columns[3].HeaderText = "Име на хеадер текстот";

            // Колона 5
            theList.Columns[4].HeaderText = "Име на хеадер текстот";
            theList.Columns[4].Visible = false; // Да не се прикажуваа оваа колона


            // Додавање на ComboBox...
            cmbBox = new DataGridViewComboBoxColumn();
            cmbBox.Width = 82;
            cmbBox.HeaderText = "Име на хедер текстот";
            cmbBox.Text = "Име на редот во колоната";
            cmbBox.UseColumnTextForButtonValue = true;
            dataGridView.Columns.Add(cmbBox);
        }

Едит: Значи горниот код малце го изменив (мене ми е со Button, а тука го пишав за со ComboBox) и овој код го имам користено во една програма со MS Access база. Разгледај го мислам дека нема да ти биде тешко да сватиш како работи, ако има нешто нејасно прашај па ќе ја наредиме. :)

Едит2: Кај што ќе видиш „theList“ тоа е уствари „dataGridView1“ (кај мене е theList... сум пропуштил да го променам на некои делови).
 
Имам 2 форми.. со button пристапувам од едната во друга.Втората форма ми е малечка и ми служи само за внесвање мали информации.Сакам да напрам втората форма да излегва а старата да се гледа во позадина но да не можи да се пристапува до неа се додека не се исклучи втората.Пробав со true false на формата ама не валјда хелп? :toe:
 
Имам 2 форми.. со button пристапувам од едната во друга.Втората форма ми е малечка и ми служи само за внесвање мали информации.Сакам да напрам втората форма да излегва а старата да се гледа во позадина но да не можи да се пристапува до неа се додека не се исклучи втората.Пробав со true false на формата ама не валјда хелп? :toe:

Втората форма ја стартуваш со Show() методот, така ?
Стартувај ја со ShowDialog() и ќе испадне како што сакаш. :)
 
Ај уште едно прашање и не прашвам појке да не сум досаден :icon_lol: . Дали знај некој како да го бришам селектираниот ред од датагридот и доколку не е селектиран ред да не продолжва со бришењето :toe:
 
Ај уште едно прашање и не прашвам појке да не сум досаден :icon_lol: . Дали знај некој како да го бришам селектираниот ред од датагридот и доколку не е селектиран ред да не продолжва со бришењето :toe:

Вака сега... тука имаш повеќе варијанти.

Имаш во DataGridView-от во редовите дугмиња или имаш CheckBox и едно дугме или пак нешто сосем трето ?

Друга ствар, со што го полнуш DataGridView-от, со податоци од база или... ?

А иначе за бришењето ти треба евентот CellContentClick и тука ќе се ориентираш според e.RowIndex и имињата на колоните...

Е сега, ако имаш дугмиња во сите редови ондак вака ќе му дојде кодот:
Код:
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
int currentRow = 0;

try
{
currentRow = int.Parse(dataGridView1["id", e.RowIndex].Value.ToString()); // id = името на хедерот
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}

if(currentRow >= 0 && dataGridView1.Columns[e.ColumnIndex] == deleteButton) // deleteButton = името на променливата на дугмето.
{
// тука го извршуваш бришењето
// И ќе се ориентираш по e.RowIndex и по имињата на хедерите
}
}

E сега вака незнам колку ме разбра, ако можеш да се снајдеш арно, ако не наведи поконкретно што точно ти треба и ќе ја наредиме. :)
 
Вака сега... тука имаш повеќе варијанти.

Имаш во DataGridView-от во редовите дугмиња или имаш CheckBox и едно дугме или пак нешто сосем трето ?

Друга ствар, со што го полнуш DataGridView-от, со податоци од база или... ?

А иначе за бришењето ти треба евентот CellContentClick и тука ќе се ориентираш според e.RowIndex и имињата на колоните...

Е сега, ако имаш дугмиња во сите редови ондак вака ќе му дојде кодот:
Код:
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
int currentRow = 0;

try
{
currentRow = int.Parse(dataGridView1["id", e.RowIndex].Value.ToString()); // id = името на хедерот
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}

if(currentRow >= 0 && dataGridView1.Columns[e.ColumnIndex] == deleteButton) // deleteButton = името на променливата на дугмето.
{
// тука го извршуваш бришењето
// И ќе се ориентираш по e.RowIndex и по имињата на хедерите
}
}

E сега вака незнам колку ме разбра, ако можеш да се снајдеш арно, ако не наведи поконкретно што точно ти треба и ќе ја наредиме. :)
Епа вака ... немам ништо ни combo ни дугмиња на секој ред туку сакам да селектирам ред и имам само 1 дугменце и преку то да се избриши селектираниот ред ... иначе гридот го полнам од база и то ми е проблемот со сакам да се бриши редот и од гридот и од базата ..е ај ако можи хелп ако не то е :helou:
 
Епа вака ... немам ништо ни combo ни дугмиња на секој ред туку сакам да селектирам ред и имам само 1 дугменце и преку то да се избриши селектираниот ред ... иначе гридот го полнам од база и то ми е проблемот со сакам да се бриши редот и од гридот и од базата ..е ај ако можи хелп ако не то е :helou:

За одредување на селектиран ред користи dataGridView1.SelectedRows... ако имаш повеќе селектирани редови ондак со foreach изминувај ги само селектираните редови

Код:
foreach (DataGridViewRows dgvr in dataGridView.SelectedRows)
{
...
}

Е сега, за да ги избришеш секетираните редови треба да ги вчиташ вредностите. Значи:

Код:
foreach (DataGridViewRows dgvr in dataGridView1.SelectedRows)
{
try
{
int curRow = int.Parse(dataGridView1["id", e.RowIndex].Value.ToString()); // Кај id ќе го пишеш името на колоната кај што запишуваш id, а e.RowIndex ќе ти биде тековниот ред
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
return;
}

// Сега го вчитуваш id-то (да речеме дека по тоа ќе се ориентираш)
string myID = dataGridView1["id", currentRow].Value.ToString();

// Како за тест да видиш што ќе ти  испечати направи вака
MessageBox.Show("DELETE FROM TableName WHERE id = " + myID);

// Ако работи како што треба ондак вака
try
{
// Отвараш конекција со базата
// Извршуваш SQL команда
// Затвараш конекција
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
return;
}

// Е сега за да ги избришеш и од DataGridView ондак или наполни го DataGridView-од поново или вака некако ќе му дојде
dataGridView1.Rows[curRow].Delete();
dataGridView1.AcceptChanges();
// Незнам ова последново дали и колку е точно, мислам дека ќе ти треба DataTable
}

Бидејки не го пробав во компајлер незнам дали точно ќе работи, али мислам дека би требало да работи океј или евентуално да корегираш нешто кај e.RowIndex за вчитување на индексот на тековниот (селектираниот) ред и тоа би било тоа. :)
 
За одредување на селектиран ред користи dataGridView1.SelectedRows... ако имаш повеќе селектирани редови ондак со foreach изминувај ги само селектираните редови

Код:
foreach (DataGridViewRows dgvr in dataGridView.SelectedRows)
{
...
}

Е сега, за да ги избришеш секетираните редови треба да ги вчиташ вредностите. Значи:

Код:
foreach (DataGridViewRows dgvr in dataGridView1.SelectedRows)
{
try
{
int curRow = int.Parse(dataGridView1["id", e.RowIndex].Value.ToString()); // Кај id ќе го пишеш името на колоната кај што запишуваш id, а e.RowIndex ќе ти биде тековниот ред
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
return;
}

// Сега го вчитуваш id-то (да речеме дека по тоа ќе се ориентираш)
string myID = dataGridView1["id", currentRow].Value.ToString();

// Како за тест да видиш што ќе ти  испечати направи вака
MessageBox.Show("DELETE FROM TableName WHERE id = " + myID);

// Ако работи како што треба ондак вака
try
{
// Отвараш конекција со базата
// Извршуваш SQL команда
// Затвараш конекција
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
return;
}

// Е сега за да ги избришеш и од DataGridView ондак или наполни го DataGridView-од поново или вака некако ќе му дојде
dataGridView1.Rows[curRow].Delete();
dataGridView1.AcceptChanges();
// Незнам ова последново дали и колку е точно, мислам дека ќе ти треба DataTable
}

Бидејки не го пробав во компајлер незнам дали точно ќе работи, али мислам дека би требало да работи океј или евентуално да корегираш нешто кај e.RowIndex за вчитување на индексот на тековниот (селектираниот) ред и тоа би било тоа. :)
Ништо брат не бива али сепак многу фалааааа ке се мачам некако можи ке се снајдам :icon_conf

брат ова некако го напрајв вртев кружев пустев штурев ама работи важно :).Е сега имам еден проблем ... како да напрам ако нема селектирано ред од гридот да излегва пр. messagebox и ке му кажва дека нема селектирано ред.А вака автоматски ми е селектиран првиот ред и ако маниш бриши си се бриши првиот ред :raz: .ако можиш пиши ако не доста е и ова со го напрај досега борџам пиво :helou:
 
Ништо брат не бива али сепак многу фалааааа ке се мачам некако можи ке се снајдам :icon_conf

брат ова некако го напрајв вртев кружев пустев штурев ама работи важно :).Е сега имам еден проблем ... како да напрам ако нема селектирано ред од гридот да излегва пр. messagebox и ке му кажва дека нема селектирано ред.А вака автоматски ми е селектиран првиот ред и ако маниш бриши си се бриши првиот ред :raz: .ако можиш пиши ако не доста е и ова со го напрај досега борџам пиво :helou:

Чим си средил арно :)
Е тоа за ако нема селектирано ниеден ред мислам дека вака ќе му дојде:

Код:
if(dataGridView1.SelectedRows.Count < 1)
{
MessageBox.Show("Нема ниту еден ред селектиран.");
}
 
Дали случајно во случајностите некој случајно знај како можи кога излегва MessageBox да има на пр некој звук :)))
 
Дали случајно во случајностите некој случајно знај како можи кога излегва MessageBox да има на пр некој звук :)))

Обичен MessageBox не поддржува никакви додатоци (збуци, дугмиња, бои...) освен тие што се неговите стандардните.

Значи имаш неколку варијанти:

Код:
MessageBox.Show("Пораката", "Насловот на месиџ боксот", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.button1);

MessageBox.Show("Пораката", "Насловот на месиџ боксот", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.button1);

MessageBox.Show("Пораката", "Насловот на месиџ боксот", MessageBoxButtons.OK, MessageBoxIcon.Question, MessageBoxDefaultButton.button1);

MessageBox.Show("Пораката", "Насловот на месиџ боксот", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.button1);

Ова се неколку примери... по потреба можеш да ги менуваш MessageBoxButton и MessageBoxIcon. Со MessageBoxIcon следува и соодветен звук при појавувањето на MessageBox-от.

Исто така со MessageBoxIcon следува и соодветна икона во MessageBox-от.

Значи со обичен MessageBox можеш да ги користиш само неговите компоненти, неможеш да додаваш твои икони, звуци и слично... А ако не ти се допаѓаат вградените компоненти ондак ќе мораш да правиш тој стил на MessageBox и таму можеш да правиш што сакаш. :)
 
tnx bro за одговорот :).Го напрајв инаку јас ко ке излегва пораката читам од класа музика и супер си е :D
 
За веб страна во C#, како да импортирам некој веб темплејт ?

skrstevsky напиша:
За веб страна во C#, како да импортирам некој веб темплејт ?

ОК најдов нешто кој знае шо е само :)
 

Kajgana Shop

Back
На врв Bottom