powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как сделать DataBinding для поля в котором имеется значение DBNULL?
25 сообщений из 25, страница 1 из 1
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32773753
Фотография Dim Grishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как сделать DataBinding для поля в котором имеется значение DBNULL?
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32773790
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
создай объект Binding, подпишись на его события Format и Parse.
добавь его в коллекцию DataBindings Control'a
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32773949
Фотография Dim Grishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так не работает.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Binding bind=new Binding("Value",tarRow,"ID_pi");
cbpiN.DataBindings.Add(bind);
bind.Format +=new ConvertEventHandler(bind_Format);
bind.Parse  +=new ConvertEventHandler(bind_Parse);

private void bind_Parse(object sender, ConvertEventArgs e)
{
if(e.DesiredType == typeof(DBNull)) 
{
	e.Value = 0;
}
}

private void bind_Format(object sender, ConvertEventArgs e)
{
if(e.DesiredType == typeof(DBNull)) 
{
	e.Value = 0;
}
}
Как нужно?
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32774018
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32774039
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
должно быть для Parse что то в этом роде
Код: plaintext
1.
2.
3.
if(e.DesiredType == typeof(int))  // нужный тип для отображения, а не DBNull
{
  e.Value=(Convert.IsDBNull(e.Value)) ? 0 : e.Value;
}
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32774282
Фотография Dim Grishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не работает, на событие никогда не сробатывает!?
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32774339
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
формат должен сработать. кстати, код привел выше, он именно на формат
(datasource --> control).
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32774916
Фотография Dim Grishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я делаю это для обычной редактируемой строки.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
AgentMan.dsMain.TariffRow tarRow;///!!!
...
...
...
Binding bind=new Binding("Value",tarRow,"ID_pi");
bind.Format +=new ConvertEventHandler(bind_Format);
bind.Parse  +=new ConvertEventHandler(bind_Parse);			
cbpiN.DataBindings.Add(bind);
...
...
...
private void bind_Parse(object sender, ConvertEventArgs e)
{
if(e.DesiredType == typeof(DBNull)) 
{
	e.Value=(Convert.IsDBNull(e.Value)) ? 0 : e.Value;
}
}

private void bind_Format(object sender, ConvertEventArgs e)
{
if(e.DesiredType == typeof(DBNull)) 
{
	e.Value = 0;				
}
}
Не срабатывает!?
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32774952
Фотография Dim Grishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще на событие не реагирует.
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32775023
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cbpiN - что это за контрол ?
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32775065
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
???
запрос значения (самого первого) происходит внутри DataBindings.Add(bind); - в нем же вызывается и обработчик format.
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32775080
Фотография Dim Grishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На break point не входит, то есть не катит!
Можешь выслать пример простенькой програмки?
dagarkov@etalon.aval.ua
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32775089
Фотография Dim Grishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть извращенный вариант, нашел в инете:
Код: plaintext
1.
2.
if (this.dRow["..."]==System.DBNull.Value) 
this.dRow["..."]=System.DBNull.Value.ToString(); 
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32775169
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на форме лежит один контрол dateTimePicker1 - DateTimePicker
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
DataSet	ds=new DataSet();

public Form1()
{
  InitializeComponent();
			
  DataTable tbl=new DataTable("A");
  tbl.Columns.Add("DT", typeof(DateTime));
			
  DataRow rw=tbl.NewRow();
  rw["DT"]=DateTime.Now; // попробуй в таком виде и закоментарить эту строку
  tbl.Rows.Add(rw);
			
  Binding bind=new Binding("Value", tbl, "DT");
  bind.Format+=new ConvertEventHandler(bind_Format);
  this.dateTimePicker1.DataBindings.Add(bind);
}

private void bind_Format(object sender, ConvertEventArgs e)
{
  if(e.DesiredType!=typeof(DateTime)) return; // поставь здесь точку останова
  if(Convert.IsDBNull(e.Value)) e.Value=new DateTime(2001, 2,3);
}
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32775316
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
if(e.DesiredType == typeof(DBNull)) вот объясни, что ты здесь проверяешь ???
у какого контрола есть св-во с таким типом ???
не говоря уже о колонках в DataTable - там ты сразу вылетишь на exception при попытке создать колонку с таким типом данных.
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32776184
Фотография Dim Grishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я брал пример из какого-то топика, а суть не в этом!- на событие вообще не реагировало...

В твоем примере на событие реагирует, только значение не меняется!?
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32776209
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim GrishinВ твоем примере на событие реагирует, только значение не меняется!?блин, старая песня :)
вроде уже сколько об этом говорили...

добавь кнопку на форму и в обработчике клика кнопки
Код: plaintext
1.
2.
3.
DataTable tbl=(DataTable)this.dateTimePicker1.DataBindings["Value"].DataSource;
tbl.Rows[0].EndEdit(); // <---  ведь говорили об этом не один раз с тобой
object dt=tbl.Rows[0]["DT"]; // любуйся на новое значение :)
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32776268
Фотография Dim Grishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это прикол я понял, не работает! :)
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32776273
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что не работает ? конкретнее ...
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32776280
Фотография Dim Grishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заработало, а как в combobox убрать тек. запись, что бы она утсановилась на null?
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32776298
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если ComboBox привязан к колонке таблицы lookup справочника - никак.

есть обходной путь - добавить к таблице еще одну запись
чтобы под ValueMember попадал DBNull, а в DisplayMember текст типа "(null)" или "<не определено>"
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32776302
Фотография Dim Grishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче у меня теперь другая проблема,

Это часть моей програмки, если что то не понятно могу уточнить:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
private void btnEditTariff_Click(object sender, System.EventArgs e)
{
bool IsNewRow=(((Button)sender).Name!=btnEditTariff.Name);
try
{
AgentMan.dsMain.TariffRow editTariffRow;

if (IsNewRow)
{
editTariffRow=this.dsMain1.Tariff.NewTariffRow();
//////Значения по умолчанию
editTariffRow.tarDF=DateTime.Today;
editTariffRow.tarDT=DateTime.Today;				
}
else
{
editTariffRow=((AgentMan.dsMain.TariffRow)((DataRowView)this.grdTariff.BindingContext[this.grdTariff.DataSource, this.grdTariff.DataMember].Current).Row);								  
editTariffRow.BeginEdit();				
}
	
frmEditTariff frmET=new frmEditTariff();
frmET.DialogParam(this.dsMain1,editTariffRow);				

frmET.ShowDialog(this);
if (frmET.DialogResult==DialogResult.OK)	
{					
if (IsNewRow) 
{
  this.dsMain1.Tariff.AddTariffRow(editTariffRow);			
}

editTariffRow.EndEdit();						
this.grdTariff.BindingContext["Tariff"].EndCurrentEdit();
dml.UpdateTableData(dsMain1.Tariff,dml.sdaTariff);			
} 
else
editTariffRow.CancelEdit();
frmET.Dispose();
}
catch (System.Exception eEndEdit)
{
System.Windows.Forms.MessageBox.Show(eEndEdit.Message);
}

Что делает UpdateTableData
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public bool UpdateTableData(DataTable dtParam,System.Data.SqlClient.SqlDataAdapter sdaParam)
{
bool result=true;
try
{
sdaParam.Update(dtParam);
dtParam.AcceptChanges();
}
catch (System.Exception e)
{
dtParam.RejectChanges(); // <-- Тебе за это спасибо! :)
System.Windows.Forms.MessageBox.Show(e.Message,"Ошибка.");
result=false;
}
return result;
}

frmEditTariff - Форма редактирования записи
dml - как в Delphi модуль с dataadapter'aми

У меня в форме редактирования при получении параметров
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
public void DialogParam(AgentMan.dsMain dsParam,AgentMan.dsMain.TariffRow tarRow)
{
this.ds1=dsParam;
this.CurrenttarRow=tarRow;
//AgentMan.dsMain.TariffDataTable tarRow=ds1.Tariff;


this.cbpiN.DataSource=dwProgIns;
this.cbzoneN.DataSource=ds1.Zones;

this.cbcurN.DataSource=ds1.Currency;
this.cbriskN.DataSource=ds1.Risk;
this.cbcurNInsure.DataSource=ds1.Currency;
this.cbtpN.DataSource=ds1.TypePeriod;
this.dwProgIns.Table=ds1.ProgIns;
this.cbtpN	.DataBindings.Add(new System.Windows.Forms.Binding("Value", tarRow, "ID_tp"));
this.cbriskN.DataBindings.Add(new System.Windows.Forms.Binding("Value", tarRow, "ID_risk"));
this.cbcurNInsure.DataBindings.Add(new System.Windows.Forms.Binding("Value", tarRow, "ID_curInsure"));
this.cbcurN	.DataBindings.Add(new System.Windows.Forms.Binding("Value", tarRow, "ID_cur"));


this.cbzoneN.DataBindings.Add(new System.Windows.Forms.Binding("Value",tarRow,"ID_zone"));
this.cbpiN	.DataBindings.Add(new System.Windows.Forms.Binding("Value",tarRow,"ID_pi"));
this.dptarDF.DataBindings.Add(new System.Windows.Forms.Binding("Value",tarRow,"tarDF"));
this.dptarDT.DataBindings.Add(new System.Windows.Forms.Binding("Value",tarRow,"tarDT"));
this.edtarSInsure.DataBindings.Add("Text",tarRow,"tarSInsure");
this.edtarSTariff.DataBindings.Add("Text",tarRow,"tarSTariff");

/// <NULLS>
this.chbID_piISNull.Checked=tarRow["ID_pi"]==System.DBNull.Value;
this.chbID_zoneISNull.Checked=tarRow["ID_zone"]==System.DBNull.Value ;
}

Так вот, после этого всего, когда я пытаюсь редактировать строку второй раз!
оно не сразу сохраняет, тут какая то ошибка с DataBinding'om, надеюсь не в ДНК :)
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32776407
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты хоть представляешь, на сколько гекалитров это потянет (разобраться в "часть моей програмки" ) ?
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32776870
Фотография Dim Grishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен, много, если ты из Киева, можно устроить.
Мне просто показалось, что для профессионала здесь всё очевидно и понятно.
А тут всего-то чать кода редактирования строки в DataSet'e , тривиальная необходимость.
...
Рейтинг: 0 / 0
Как сделать DataBinding для поля в котором имеется значение DBNULL?
    #32777070
Фотография Dim Grishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так что никак?
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как сделать DataBinding для поля в котором имеется значение DBNULL?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]