Рейтинг:
6
Zunayed Shahriar
Сначала в свойстве DataGridView измените значение "AllowUserToAddRows" с "True" на " False"
Измененные Фрагменты:
Менять "строке = dataGridView1.Строк.Count -2; "to" row = dataGridView1. Rows.Граф -1; " в ваших методах.
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex > -1)
{
var curCell = dataGridView1.CurrentCell;
if (curCell.Value == null || (bool)curCell.Value == false)
{
curCell.Value = true;
}
else
{
curCell.Value = false;
}
if ((bool)curCell.Value)
{
dataGridView1.Columns["AMOUNT"].Visible = true;
}
else
{
dataGridView1.Columns["AMOUNT"].Visible = false;
}
}
}
Если это работает, пожалуйста, отметьте это как решение.
saimanisha
текстовое поле столбца сумма не должно быть видно до тех пор ,пока я не нажму на флажок .ваш ответ работает частично, как его правильный, но в соответствии с моим требованием, когда я нажимаю на флажок столбца 4 row1, текстовое поле столбца 5 и row1 должно быть видно.
saimanisha
я получаю проблему, которая возникает во второй раз, когда я добавляю данные в datagridview, не нажимая на флажок его показывать количество столбцов текстового поля в datagridview.как преодолеть эту проблему
Zunayed Shahriar
новое изменение
новый метод:
частный недействительными ResetSelection()
{
по каждому элементу (ячейки datagridviewrow строку в dataGridView1.Строк)
{
ряд.Ячейки ["SELECT"]. Value = false;
}
}
Измененные Методы:
частный недействительными обработчика button1_click(объект отправителя, EventArgs в электронной)
{
//ADDDATA(textBox2. Text, textBox1.Text);
//string EMINITIESNAME = textBox2. Text;
//string DESCRIPTION = textBox1. Text;
int row = 0;
dataGridView1.Строк.Добавить();
строки = dataGridView1.Строк.Считай -1;
dataGridView1 ["AMENITIESNAME", row]. Value = textBox2. Text;
dataGridView1 ["описание", строка]. Value = textBox1. Text;
dataGridView1.Колонки["количество"].Видна = ложь;
LoadSerial();
ResetSelection();
}
частная dataGridView1_CellContentClick недействительным(объект отправителя, DataGridViewCellEventArgs е)
{
Система.Нарезание резьбы.Нить.Сон(200);
если (электронная.Параметр rowindex &ГТ; -1 &амп;&амп; dataGridView1.CurrentCell == dataGridView1.Ряды[электронный.Параметр rowindex].Ячейки ["SELECT"])
{
ResetSelection();
если (dataGridView1.Колонки["количество"].Видно == ложь)
{
dataGridView1.CurrentCell.Значение = ИСТИНА;
dataGridView1.Колонки["количество"].Видимое = истинное;
}
ещё
{
dataGridView1.Колонки["количество"].Видна = ложь;
dataGridView1.CurrentCell.Значение = ложь;
}
}
}
Попробовать это. Если возникнут какие-то проблемы, дайте мне знать.
saimanisha
он работает так же, как и вчерашний код.. когда я нажимаю флажок текущей строки, он должен включить текстовое поле другого столбца той же строки..но здесь он работает так, как будто он включает и отключает весь столбец текстового поля, который является не чем иным, как столбцом суммы..
Zunayed Shahriar
Вы просто не можете скрыть клетку. Вот что вы можете сделать.
Полный новый источник:
использование системы;
использование системы.Коллекции.Общий;
использование системы.ComponentModel;
используя системы.Сведения;
использование системы.Рисование;
использование System. Linq;
используя системы.Текст;
использование системы.Нарезание резьбы.Задачи;
использование системы.Окна.Формы;
пространство имен STS_RAM
{
общественности частичного класс form1 : форма
{
открытый form1()
{
метод InitializeComponent();
// LoadSerial();
}
/* частная dataGridView1_CellEndEdit недействительным(объект отправителя, DataGridViewCellEventArgs е)
{
LoadSerial();
}*/
// int счетчик = 0;
частный недействительными обработчика button1_click(объект отправителя, EventArgs в электронной)
{
//ADDDATA(textBox2. Text, textBox1.Text);
//string EMINITIESNAME = textBox2. Text;
//string DESCRIPTION = textBox1. Text;
int row = 0;
dataGridView1.Строк.Добавить();
строки = dataGridView1.Строк.Считай -1;
dataGridView1 ["AMENITIESNAME", row]. Value = textBox2. Text;
dataGridView1 ["описание", строка]. Value = textBox1. Text;
dataGridView1 ["сумма", строка].Толькочтение = истина;
dataGridView1 ["сумма", строка].Стиль.BackColor = Цвет.Черный;
LoadSerial();
}
частная пустота LoadSerial()
{
int i = 1;
по каждому элементу (ячейки datagridviewrow строку в dataGridView1.Строк)
{
ряд.Ячейки ["ID"]. Value = i; i++;
}
}
public void ADDDATA(string AMENITIESNAME, string DESCRIPTION)
{
int row = 0;
dataGridView1.Строк.Добавить();
строки = dataGridView1.Строк.Считай -1;
dataGridView1 ["AMENITIESNAME", row]. Value = textBox2. Text;
dataGridView1 ["описание", строка]. Value = textBox1. Text;
}
частный недействительными методе form1_load(объект отправителя, EventArgs в электронной)
{
}
частный недействительными textBox1_TextChanged(объект отправителя, EventArgs в электронной)
{
}
частная dataGridView1_CellContentClick недействительным(объект отправителя, DataGridViewCellEventArgs е)
{
Система.Нарезание резьбы.Нить.Сон(200);
ВАР amountCell = dataGridView1.Ряды[электронный.Параметр rowindex].Ячейки ["количество"];
если (электронная.Параметр rowindex &ГТ; -1 &амп;&амп; dataGridView1.CurrentCell == dataGridView1.Ряды[электронный.Параметр rowindex].Ячейки ["SELECT"])
{
если (amountCell.Только для чтения == правда)
{
dataGridView1.CurrentCell.Значение = ИСТИНА;
amountCell.Толькочтение = ложь;
сумма в ячейке.Стиль.BackColor = Цвет.Белый;
}
ещё
{
dataGridView1.CurrentCell.Значение = ложь;
amountCell.Толькочтение = истина;
сумма в ячейке.Стиль.BackColor = Цвет.Черный;
}
}
}
}
}
saimanisha
ЭТО СРАБОТАЛО, СПАСИБО.. НО КАК Я МОГУ ПРЕКРАТИТЬ РЕДАКТИРОВАНИЕ ДАЖЕ ПОСЛЕ ТОГО, КАК СДЕЛАЛ ЕГО ЛОЖНЫМ..ЕГО РЕДАКТИРУЮТ
saimanisha
Проблема в том, что когда я нажимаю на флажок, он не дает возможности редактировать..но когда я снимаю его, он позволяет ввести сумму..где мы должны изменить код?
Zunayed Shahriar
Не нажимайте слишком быстро.
изменить систему.Нарезание резьбы.Нить.Sleep(200); система "to".Нарезание резьбы.Нить.Сон (300); " чтобы поправиться.
saimanisha
нет, яар, это не работает.когда я нажимаю на флажок, он должен разрешить текст в текстовом поле, иначе он не должен...но это делается в обратном порядке..когда я снимаю галочку с его разрешения редактировать..
Zunayed Shahriar
Новый полный класс:
общественности частичного класс form1 : форма
{
DataGridViewCell lastCell = null;
открытый form1()
{
метод InitializeComponent();
// LoadSerial();
}
/* частная dataGridView1_CellEndEdit недействительным(объект отправителя, DataGridViewCellEventArgs е)
{
LoadSerial();
}*/
// int счетчик = 0;
частный недействительными обработчика button1_click(объект отправителя, EventArgs в электронной)
{
//ADDDATA(textBox2. Text, textBox1.Text);
//string EMINITIESNAME = textBox2. Text;
//string DESCRIPTION = textBox1. Text;
int row = 0;
dataGridView1.Строк.Добавить();
строки = dataGridView1.Строк.Считай -1;
dataGridView1 ["AMENITIESNAME", row]. Value = textBox2. Text;
dataGridView1 ["описание", строка]. Value = textBox1. Text;
dataGridView1 ["SELECT", row]. Value = false;
dataGridView1 ["сумма", строка].Толькочтение = истина;
dataGridView1 ["сумма", строка].Стиль.BackColor = Цвет.Черный;
LoadSerial();
}
частная пустота LoadSerial()
{
int i = 1;
по каждому элементу (ячейки datagridviewrow строку в dataGridView1.Строк)
{
ряд.Ячейки ["ID"]. Value = i; i++;
}
}
public void ADDDATA(string AMENITIESNAME, string DESCRIPTION)
{
int row = 0;
dataGridView1.Строк.Добавить();
строки = dataGridView1.Строк.Считай -1;
dataGridView1 ["AMENITIESNAME", row]. Value = textBox2. Text;
dataGridView1 ["описание", строка]. Value = textBox1. Text;
}
частный недействительными методе form1_load(объект отправителя, EventArgs в электронной)
{
}
частный недействительными textBox1_TextChanged(объект отправителя, EventArgs в электронной)
{
}
частная dataGridView1_CellContentClick недействительным(объект отправителя, DataGridViewCellEventArgs е)
{
if (lastCell != null)
{
ВАР lastAmtCell = dataGridView1.Строк[lastCell.Параметр rowindex].Ячейки ["количество"];
если (lastAmtCell.Только для чтения == правда)
{
lastCell.Значение = ложь;
}
ещё
{
lastCell.Значение = ИСТИНА;
}
}
ВАР amountCell = dataGridView1.Ряды[электронный.Параметр rowindex].Ячейки ["количество"];
если (электронная.Параметр rowindex &ГТ; -1 &амп;&амп; dataGridView1.CurrentCell == dataGridView1.Ряды[электронный.Параметр rowindex].Ячейки ["SELECT"])
{
если (amountCell.Только для чтения == правда)
{
dataGridView1.CurrentCell.Значение = ИСТИНА;
amountCell.Толькочтение = ложь;
сумма в ячейке.Стиль.BackColor = Цвет.Белый;
}
ещё
{
dataGridView1.CurrentCell.Значение = ложь;
amountCell.Толькочтение = истина;
сумма в ячейке.Стиль.BackColor = Цвет.Черный;
}
lastCell = dataGridView1. CurrentCell;
}
}
}
saimanisha
большое вам спасибо,он работает.
saimanisha
у меня есть сомнения, как отправить эти данные gridview в sql..здесь ниже код, но перед вводом суммы в ячейку суммы и после нажатия на флажок он подключается к sql..здесь я хочу, чтобы пользователь ввел сумму, а затем он должен проверить, пуста ячейка суммы или нет..если не пуста, то он должен вставить в sql.
ВАР amountCell = dataGridView1.Ряды[электронный.Параметр rowindex].Ячейки ["количество"];
если (электронная.Параметр rowindex &ГТ; -1 &амп;&амп; dataGridView1.CurrentCell == dataGridView1.Ряды[электронный.Параметр rowindex].Ячейки ["флажок"])
{
если (amountCell.Только для чтения == правда)
{
amountCell.Толькочтение = ложь;
сумма в ячейке.Стиль.BackColor = Цвет.Белый;
dataGridView1.Колонки["количество"].Видимое = истинное;
// TimeSpan ts = TimeSpan.Фроммиллисекунды(150000000);
// bool flag = false;
}
по каждому элементу (ячейки datagridviewrow строку в dataGridView1.Строк)
{
{
если (преобразовать.Метод toString(строки.Ячейки["сумма"].Значение) == строка.Пустой)
{
Ящик для сообщений.Показать ("пожалуйста, введите сумму"); вернуть;
}
ещё
{
// КОД ДЛЯ ПОДКЛЮЧЕНИЯ SQL И СТРОИНГ ДАННЫЕ В БД
Объект sqlconnection кон = новое sqlconnection(@"источник данных=рабочий стол-QDGHD7L;начальный каталог=банкетный зал ;пароль=секрет;Комплексная безопасность=истина;");
против.Открыть();
for (int i = 0; i < dataGridView1.Rows.Граф; i++)
{
строки StrQuery = @"вставить в значениях услуги (@ИД@AMENITIESNAME,@описание, флажок@,@сумма)";
SqlCommand CMD = new SqlCommand(StrQuery, con);
УМК.Параметры.AddWithValue ("@ID", dataGridView1.Rows[i].Ячейки[0]. Значение);
УМК.Параметры.AddWithValue ("@AMENITIESNAME", dataGridView1.Rows[i].Ячейки[1]. Значение);
УМК.Параметры.AddWithValue ("@DESCRIPTION", dataGridView1.Rows[i].Ячейки[2]. Значение);
УМК.Параметры.AddWithValue ("@CHECKBOX", dataGridView1. Rows[i].Ячейки[3]. Значение);
УМК.Параметры.AddWithValue ("@AMOUNT", dataGridView1. Rows[i].Ячейки[4]. Значение);
УМК.Метод executenonquery();
}
}
ещё
{
dataGridView1.Ряды[электронный.Параметр rowindex].Ячейки ["сумма"]. ReadOnly = true;
сумма в ячейке.Стиль.BackColor = Цвет.Серый;
dataGridView1.Колонки["количество"].Видимое = истинное;
}
lastCell = dataGridView1. CurrentCell;
}
}
}
}