C#.NET

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Добро, ќе пробам со 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... сум пропуштил да го променам на некои делови).
 
Член од
23 септември 2007
Мислења
93
Поени од реакции
0
Имам 2 форми.. со button пристапувам од едната во друга.Втората форма ми е малечка и ми служи само за внесвање мали информации.Сакам да напрам втората форма да излегва а старата да се гледа во позадина но да не можи да се пристапува до неа се додека не се исклучи втората.Пробав со true false на формата ама не валјда хелп? :toe:
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Имам 2 форми.. со button пристапувам од едната во друга.Втората форма ми е малечка и ми служи само за внесвање мали информации.Сакам да напрам втората форма да излегва а старата да се гледа во позадина но да не можи да се пристапува до неа се додека не се исклучи втората.Пробав со true false на формата ама не валјда хелп? :toe:
Втората форма ја стартуваш со Show() методот, така ?
Стартувај ја со ShowDialog() и ќе испадне како што сакаш. :)
 
Член од
23 септември 2007
Мислења
93
Поени од реакции
0
Ај уште едно прашање и не прашвам појке да не сум досаден :icon_lol: . Дали знај некој како да го бришам селектираниот ред од датагридот и доколку не е селектиран ред да не продолжва со бришењето :toe:
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Ај уште едно прашање и не прашвам појке да не сум досаден :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 сега вака незнам колку ме разбра, ако можеш да се снајдеш арно, ако не наведи поконкретно што точно ти треба и ќе ја наредиме. :)
 
Член од
23 септември 2007
Мислења
93
Поени од реакции
0
Вака сега... тука имаш повеќе варијанти.

Имаш во 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:
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Епа вака ... немам ништо ни 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 за вчитување на индексот на тековниот (селектираниот) ред и тоа би било тоа. :)
 
Член од
23 септември 2007
Мислења
93
Поени од реакции
0
За одредување на селектиран ред користи 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:
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Ништо брат не бива али сепак многу фалааааа ке се мачам некако можи ке се снајдам :icon_conf

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

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

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Дали случајно во случајностите некој случајно знај како можи кога излегва 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 и таму можеш да правиш што сакаш. :)
 
Член од
23 септември 2007
Мислења
93
Поени од реакции
0
tnx bro за одговорот :).Го напрајв инаку јас ко ке излегва пораката читам од класа музика и супер си е :D
 
Член од
24 август 2007
Мислења
761
Поени од реакции
15
За веб страна во C#, како да импортирам некој веб темплејт ?

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

Kajgana Shop

На врв Bottom