Binding DateTimePicker question

D

dbuchanan

Hello,

I thought that my DateTimePicker was bound to my binding source in my entry
form, but it does not behave as though it were.

Here is the AutoGenerated code for that control:

// modifiedDateDateTimePicker
//
this.modifiedDateDateTimePicker.DataBindings.Add(new
System.Windows.Forms.Binding("Value", this.bsMTask, "ModifiedDate", true));
this.modifiedDateDateTimePicker.Enabled = false;
this.modifiedDateDateTimePicker.Location = new
System.Drawing.Point(129, 366);
this.modifiedDateDateTimePicker.Name =
"modifiedDateDateTimePicker";
this.modifiedDateDateTimePicker.Size = new
System.Drawing.Size(200, 20);
this.modifiedDateDateTimePicker.TabIndex = 25;

Here is exception text that is returned when I get the error: "Column
'ModfiedDate' does not allow nulls."

************** Exception Text **************
System.Data.NoNullAllowedException: Column 'ModifiedDate' does not allow
nulls.
at System.Data.DataColumn.CheckNullable(DataRow row)
at System.Data.DataTable.RaiseRowChanging(DataRowChangeEventArgs args,
DataRow eRow, DataRowAction eAction, Boolean fireEvent)
at System.Data.DataTable.SetNewRecordWorker(DataRow row, Int32
proposedRecord, DataRowAction action, Boolean isInMerge, Int32 position,
Boolean fireEvent, Exception& deferredException)
at System.Data.DataTable.InsertRow(DataRow row, Int32 proposedID, Int32
pos, Boolean fireEvent)
at System.Data.DataView.FinishAddNew(Int32 currentIndex, Boolean success)
at System.Data.DataRowView.EndEdit()
at System.Windows.Forms.CurrencyManager.EndCurrentEdit()
at System.Windows.Forms.BindingSource.EndEdit()
at HIP2007.AddEditMasterTask.btnSave_Click(Object sender, EventArgs e) in
M:\HIP2007\HIP2007\Dialogs _ CurrentWork\AddEditMasterTask.cs:line 92
at System.EventHandler.Invoke(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons
button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg,
IntPtr wparam, IntPtr lparam)


I thought that the default value of the DateTimePicker was the value that is
displayed in the control - the current datetime.

BTW I have disabled this control from user interaction so that it will
behave as read only.

What do I do so that today's datetime is by default put into the control so
I do not receive this error?

Thank you.

Doug
 
J

Jeffrey Tan[MSFT]

Hi Doug,

Based on my review to your code snippet, I did not see any problem about
the databinding. I have also written a test project trying to reproduce
your problem:

private void Form1_Load(object sender, EventArgs e)
{
DataTable dt=new DataTable();
dt.Columns.Add(new DataColumn("column1", typeof(int)));
dt.Columns.Add(new DataColumn("column2", typeof(DateTime)));
dt.Columns["column2"].AllowDBNull = false;

for(int i=0;i<5;i++)
{
DataRow dr=dt.NewRow();
dr["column1"]=i;
dr["column2"]=DateTime.Now.AddDays(i);
dt.Rows.Add(dr);
}
this.bindingSource1.DataSource= dt;
this.dateTimePicker1.DataBindings.Add(
new Binding("Value", this.bindingSource1, "column2", true));
}

private void button1_Click(object sender, EventArgs e)
{
this.bindingSource1.MoveNext();
}

private void button2_Click(object sender, EventArgs e)
{
this.bindingSource1.EndEdit();
}
However, it works well without any problem.

Basically, DateTimePicker.Value property should not be a null value since
DateTime is a value type not reference type; so it is hard to understand
why your BindingSource.EndEdit() will push a null value into your
datasource.

Is it possible for you to create a little sample project to demonstrate
this problem? You may attach it as a sample project in further reply.

Thanks.

Best regards,
Jeffrey Tan
Microsoft Online Community Support
==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
 
D

dbuchanan

Hi Jeffrey
Is it possible for you to create a little sample project to demonstrate
this problem? You may attach it as a sample project in further reply.

I don't quite know how to approach a sample project without also supplying a
database and .xsd file.

Maybe I don't understand it, but I can't help but think that the problem
might have something to do with udating from a form while using these
features.

Since the form is simple anyway here are the code files for the form;

=================== .cs file

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace HIP2007
{
public partial class AddEditMasterTask : bsfAddEdit
{
// Avoid firning events during load
private bool blnFormLoading = false;

public AddEditMasterTask()
{
blnFormLoading = true;

InitializeComponent();

// form title
this.Text = "";

// Title
lblDialogTitle.Text = "Add Master Task";

// Populate Dropdowns
taPhase.Fill(dataSetHipAdmin.Phase);
taMeasureDim.Fill(dataSetHipAdmin.MeasureDim);
taMeasureUnit.Fill(dataSetHipAdmin.MeasureUnit);

// Populate form
taMTask.Fill(dataSetHipAdmin.MTask);

// Disable Save button, Add Event Handlers
ButtonSettingsAndEventHandlers();

blnFormLoading = false;
}

#region [ Control of buttons

public void ButtonSettingsAndEventHandlers()
{
// Hide Save
this.btnSave.Enabled = false;
}

public void EditsBegun(object sender, EventArgs e)
{
// Change buttons after edits begin
if (!blnFormLoading)
this.btnSave.Enabled = true;
}

#endregion

#region [ Buttons

private void btnNew_Click(object sender, EventArgs e)
{
//Clear the current record
this.bsMTask.AddNew();
}

private void btnDelete_Click(object sender, EventArgs e)
{
// MessageBox attributes
string message = "Are you sure you want to permanaently remove
this record?";
string caption = "Confirmation window";
MessageBoxButtons buttons = MessageBoxButtons.YesNo;
DialogResult result;

// Displays MessageBox
result = MessageBox.Show(message, caption, buttons);

if (result == System.Windows.Forms.DialogResult.Yes)
this.bsMTask.RemoveAt(0);
}

private void btnSave_Click(object sender, EventArgs e)
{
if (contractorCommentsTextBox.Text == "")
this.contractorCommentsTextBox.Text = "No notes.";

bsMTask.EndEdit();
taMTask.Update(dataSetHipAdmin.MTask);

this.Close();
}

private void btnCancel_Click(object sender, EventArgs e)
{
// Close without saving
bsMTask.CancelEdit();
this.Close();
}

#endregion

}
}

=================== .designer.cs file

namespace HIP2007
{
partial class AddEditMasterTask
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;

/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be
disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}

#region Windows Form Designer generated code

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.Windows.Forms.Label pkMTaskIDLabel;
System.Windows.Forms.Label descriptionLabel;
System.Windows.Forms.Label baseTimeLabel;
System.Windows.Forms.Label allowParticipationLabel;
System.Windows.Forms.Label allowQuantityLabel;
System.Windows.Forms.Label ordLabel;
System.Windows.Forms.Label configuredDisplayLabel;
System.Windows.Forms.Label contractorCommentsLabel;
System.Windows.Forms.Label modifiedDateLabel;
System.Windows.Forms.Label fkMeasureDimIDLabel;
System.Windows.Forms.Label fkMeasureUnitIDLabel;
System.Windows.Forms.Label fkPhaseIDLabel1;
this.dataSetHipAdmin = new HIPAdminAccess.DataSetHipAdmin();
this.bsMTask = new
System.Windows.Forms.BindingSource(this.components);
this.pkMTaskIDTextBox = new System.Windows.Forms.TextBox();
this.descriptionTextBox = new System.Windows.Forms.TextBox();
this.baseTimeTextBox = new System.Windows.Forms.TextBox();
this.allowParticipationCheckBox = new
System.Windows.Forms.CheckBox();
this.allowQuantityCheckBox = new
System.Windows.Forms.CheckBox();
this.ordTextBox = new System.Windows.Forms.TextBox();
this.configuredDisplayCheckBox = new
System.Windows.Forms.CheckBox();
this.contractorCommentsTextBox = new
System.Windows.Forms.TextBox();
this.modifiedDateDateTimePicker = new
System.Windows.Forms.DateTimePicker();
this.taMTask = new
HIPAdminAccess.DataSetHipAdminTableAdapters.MTaskTableAdapter();
this.taMeasureUnit = new
HIPAdminAccess.DataSetHipAdminTableAdapters.MeasureUnitTableAdapter();
this.taMeasureDim = new
HIPAdminAccess.DataSetHipAdminTableAdapters.MeasureDimTableAdapter();
this.bsMeasureDim = new
System.Windows.Forms.BindingSource(this.components);
this.bsMeasureUnit = new
System.Windows.Forms.BindingSource(this.components);
this.fkMeasureDimIDComboBox = new
System.Windows.Forms.ComboBox();
this.fkMeasureUnitIDComboBox = new
System.Windows.Forms.ComboBox();
this.toolTip1 = new
System.Windows.Forms.ToolTip(this.components);
this.fkPhaseIDComboBox = new System.Windows.Forms.ComboBox();
this.bsPhase = new
System.Windows.Forms.BindingSource(this.components);
this.taPhase = new
HIPAdminAccess.DataSetHipAdminTableAdapters.PhaseTableAdapter();
pkMTaskIDLabel = new System.Windows.Forms.Label();
descriptionLabel = new System.Windows.Forms.Label();
baseTimeLabel = new System.Windows.Forms.Label();
allowParticipationLabel = new System.Windows.Forms.Label();
allowQuantityLabel = new System.Windows.Forms.Label();
ordLabel = new System.Windows.Forms.Label();
configuredDisplayLabel = new System.Windows.Forms.Label();
contractorCommentsLabel = new System.Windows.Forms.Label();
modifiedDateLabel = new System.Windows.Forms.Label();
fkMeasureDimIDLabel = new System.Windows.Forms.Label();
fkMeasureUnitIDLabel = new System.Windows.Forms.Label();
fkPhaseIDLabel1 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.dataSetHipAdmin)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bsMTask)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bsMeasureDim)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bsMeasureUnit)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bsPhase)).BeginInit();
this.SuspendLayout();
//
// lblDialogTitle
//
this.lblDialogTitle.TabIndex = 1;
//
// btnNew
//
this.btnNew.Location = new System.Drawing.Point(282, 421);
this.btnNew.TabIndex = 27;
this.btnNew.Click += new System.EventHandler(this.btnNew_Click);
//
// btnDelete
//
this.btnDelete.Location = new System.Drawing.Point(363, 421);
this.btnDelete.TabIndex = 28;
this.btnDelete.Click += new
System.EventHandler(this.btnDelete_Click);
//
// btnSave
//
this.btnSave.Location = new System.Drawing.Point(444, 421);
this.btnSave.TabIndex = 26;
this.btnSave.Click += new
System.EventHandler(this.btnSave_Click);
//
// btnCancel
//
this.btnCancel.Location = new System.Drawing.Point(525, 421);
this.btnCancel.TabIndex = 0;
this.btnCancel.Click += new
System.EventHandler(this.btnCancel_Click);
//
// pkMTaskIDLabel
//
pkMTaskIDLabel.AutoSize = true;
pkMTaskIDLabel.Location = new System.Drawing.Point(12, 45);
pkMTaskIDLabel.Name = "pkMTaskIDLabel";
pkMTaskIDLabel.Size = new System.Drawing.Size(72, 13);
pkMTaskIDLabel.TabIndex = 2;
pkMTaskIDLabel.Text = "pk MTask ID:";
pkMTaskIDLabel.Visible = false;
//
// descriptionLabel
//
descriptionLabel.AutoSize = true;
descriptionLabel.Location = new System.Drawing.Point(12, 97);
descriptionLabel.Name = "descriptionLabel";
descriptionLabel.Size = new System.Drawing.Size(63, 13);
descriptionLabel.TabIndex = 6;
descriptionLabel.Text = "Description:";
//
// baseTimeLabel
//
baseTimeLabel.AutoSize = true;
baseTimeLabel.Location = new System.Drawing.Point(12, 175);
baseTimeLabel.Name = "baseTimeLabel";
baseTimeLabel.Size = new System.Drawing.Size(60, 13);
baseTimeLabel.TabIndex = 12;
baseTimeLabel.Text = "Base Time:";
//
// allowParticipationLabel
//
allowParticipationLabel.AutoSize = true;
allowParticipationLabel.Location = new System.Drawing.Point(12,
203);
allowParticipationLabel.Name = "allowParticipationLabel";
allowParticipationLabel.Size = new System.Drawing.Size(96, 13);
allowParticipationLabel.TabIndex = 14;
allowParticipationLabel.Text = "Allow Participation:";
//
// allowQuantityLabel
//
allowQuantityLabel.AutoSize = true;
allowQuantityLabel.Location = new System.Drawing.Point(12, 233);
allowQuantityLabel.Name = "allowQuantityLabel";
allowQuantityLabel.Size = new System.Drawing.Size(77, 13);
allowQuantityLabel.TabIndex = 16;
allowQuantityLabel.Text = "Allow Quantity:";
//
// ordLabel
//
ordLabel.AutoSize = true;
ordLabel.Location = new System.Drawing.Point(13, 261);
ordLabel.Name = "ordLabel";
ordLabel.Size = new System.Drawing.Size(27, 13);
ordLabel.TabIndex = 18;
ordLabel.Text = "Ord:";
//
// configuredDisplayLabel
//
configuredDisplayLabel.AutoSize = true;
configuredDisplayLabel.Location = new System.Drawing.Point(12,
289);
configuredDisplayLabel.Name = "configuredDisplayLabel";
configuredDisplayLabel.Size = new System.Drawing.Size(98, 13);
configuredDisplayLabel.TabIndex = 20;
configuredDisplayLabel.Text = "Configured Display:";
//
// contractorCommentsLabel
//
contractorCommentsLabel.AutoSize = true;
contractorCommentsLabel.Location = new System.Drawing.Point(12,
317);
contractorCommentsLabel.Name = "contractorCommentsLabel";
contractorCommentsLabel.Size = new System.Drawing.Size(111, 13);
contractorCommentsLabel.TabIndex = 22;
contractorCommentsLabel.Text = "Contractor Comments:";
//
// modifiedDateLabel
//
modifiedDateLabel.AutoSize = true;
modifiedDateLabel.Location = new System.Drawing.Point(12, 370);
modifiedDateLabel.Name = "modifiedDateLabel";
modifiedDateLabel.Size = new System.Drawing.Size(76, 13);
modifiedDateLabel.TabIndex = 24;
modifiedDateLabel.Text = "Modified Date:";
//
// fkMeasureDimIDLabel
//
fkMeasureDimIDLabel.AutoSize = true;
fkMeasureDimIDLabel.Location = new System.Drawing.Point(12,
123);
fkMeasureDimIDLabel.Name = "fkMeasureDimIDLabel";
fkMeasureDimIDLabel.Size = new System.Drawing.Size(59, 13);
fkMeasureDimIDLabel.TabIndex = 8;
fkMeasureDimIDLabel.Text = "Dimension:";
//
// fkMeasureUnitIDLabel
//
fkMeasureUnitIDLabel.AutoSize = true;
fkMeasureUnitIDLabel.Location = new System.Drawing.Point(11,
149);
fkMeasureUnitIDLabel.Name = "fkMeasureUnitIDLabel";
fkMeasureUnitIDLabel.Size = new System.Drawing.Size(29, 13);
fkMeasureUnitIDLabel.TabIndex = 10;
fkMeasureUnitIDLabel.Text = "Unit:";
//
// fkPhaseIDLabel1
//
fkPhaseIDLabel1.AutoSize = true;
fkPhaseIDLabel1.Location = new System.Drawing.Point(12, 71);
fkPhaseIDLabel1.Name = "fkPhaseIDLabel1";
fkPhaseIDLabel1.Size = new System.Drawing.Size(40, 13);
fkPhaseIDLabel1.TabIndex = 4;
fkPhaseIDLabel1.Text = "Phase:";
//
// dataSetHipAdmin
//
this.dataSetHipAdmin.DataSetName = "DataSetHipAdmin";
this.dataSetHipAdmin.SchemaSerializationMode =
System.Data.SchemaSerializationMode.IncludeSchema;
//
// bsMTask
//
this.bsMTask.DataMember = "MTask";
this.bsMTask.DataSource = this.dataSetHipAdmin;
//
// pkMTaskIDTextBox
//
this.pkMTaskIDTextBox.DataBindings.Add(new
System.Windows.Forms.Binding("Text", this.bsMTask, "pkMTaskID", true));
this.pkMTaskIDTextBox.Location = new System.Drawing.Point(129,
42);
this.pkMTaskIDTextBox.Name = "pkMTaskIDTextBox";
this.pkMTaskIDTextBox.Size = new System.Drawing.Size(200, 20);
this.pkMTaskIDTextBox.TabIndex = 3;
this.pkMTaskIDTextBox.Visible = false;
//
// descriptionTextBox
//
this.descriptionTextBox.DataBindings.Add(new
System.Windows.Forms.Binding("Text", this.bsMTask, "Description", true));
this.descriptionTextBox.Location = new System.Drawing.Point(129,
94);
this.descriptionTextBox.Name = "descriptionTextBox";
this.descriptionTextBox.Size = new System.Drawing.Size(400, 20);
this.descriptionTextBox.TabIndex = 7;
this.descriptionTextBox.TextChanged += new
System.EventHandler(this.EditsBegun);
//
// baseTimeTextBox
//
this.baseTimeTextBox.DataBindings.Add(new
System.Windows.Forms.Binding("Text", this.bsMTask, "BaseTime", true));
this.baseTimeTextBox.Location = new System.Drawing.Point(129,
172);
this.baseTimeTextBox.Name = "baseTimeTextBox";
this.baseTimeTextBox.Size = new System.Drawing.Size(50, 20);
this.baseTimeTextBox.TabIndex = 13;
this.toolTip1.SetToolTip(this.baseTimeTextBox, "The time for
each unit of dimensional unit.");
this.baseTimeTextBox.TextChanged += new
System.EventHandler(this.EditsBegun);
//
// allowParticipationCheckBox
//
this.allowParticipationCheckBox.DataBindings.Add(new
System.Windows.Forms.Binding("CheckState", this.bsMTask,
"AllowParticipation", true));
this.allowParticipationCheckBox.Location = new
System.Drawing.Point(129, 198);
this.allowParticipationCheckBox.Name =
"allowParticipationCheckBox";
this.allowParticipationCheckBox.Size = new
System.Drawing.Size(50, 24);
this.allowParticipationCheckBox.TabIndex = 15;
this.allowParticipationCheckBox.CheckedChanged += new
System.EventHandler(this.EditsBegun);
//
// allowQuantityCheckBox
//
this.allowQuantityCheckBox.DataBindings.Add(new
System.Windows.Forms.Binding("CheckState", this.bsMTask, "AllowQuantity",
true));
this.allowQuantityCheckBox.Location = new
System.Drawing.Point(129, 228);
this.allowQuantityCheckBox.Name = "allowQuantityCheckBox";
this.allowQuantityCheckBox.Size = new System.Drawing.Size(50,
24);
this.allowQuantityCheckBox.TabIndex = 17;
this.allowQuantityCheckBox.CheckedChanged += new
System.EventHandler(this.EditsBegun);
//
// ordTextBox
//
this.ordTextBox.DataBindings.Add(new
System.Windows.Forms.Binding("Text", this.bsMTask, "Ord", true));
this.ordTextBox.Location = new System.Drawing.Point(129, 258);
this.ordTextBox.Name = "ordTextBox";
this.ordTextBox.Size = new System.Drawing.Size(50, 20);
this.ordTextBox.TabIndex = 19;
this.toolTip1.SetToolTip(this.ordTextBox, "The order in which
this task appears within the same phase.");
this.ordTextBox.TextChanged += new
System.EventHandler(this.EditsBegun);
//
// configuredDisplayCheckBox
//
this.configuredDisplayCheckBox.DataBindings.Add(new
System.Windows.Forms.Binding("CheckState", this.bsMTask,
"ConfiguredDisplay", true));
this.configuredDisplayCheckBox.Location = new
System.Drawing.Point(129, 284);
this.configuredDisplayCheckBox.Name =
"configuredDisplayCheckBox";
this.configuredDisplayCheckBox.Size = new
System.Drawing.Size(50, 24);
this.configuredDisplayCheckBox.TabIndex = 21;
this.configuredDisplayCheckBox.CheckedChanged += new
System.EventHandler(this.EditsBegun);
//
// contractorCommentsTextBox
//
this.contractorCommentsTextBox.DataBindings.Add(new
System.Windows.Forms.Binding("Text", this.bsMTask, "ContractorComments",
true));
this.contractorCommentsTextBox.Location = new
System.Drawing.Point(129, 314);
this.contractorCommentsTextBox.Multiline = true;
this.contractorCommentsTextBox.Name =
"contractorCommentsTextBox";
this.contractorCommentsTextBox.Size = new
System.Drawing.Size(400, 46);
this.contractorCommentsTextBox.TabIndex = 23;
this.contractorCommentsTextBox.TextChanged += new
System.EventHandler(this.EditsBegun);
//
// modifiedDateDateTimePicker
//
this.modifiedDateDateTimePicker.DataBindings.Add(new
System.Windows.Forms.Binding("Value", this.bsMTask, "ModifiedDate", true));
this.modifiedDateDateTimePicker.Enabled = false;
this.modifiedDateDateTimePicker.Location = new
System.Drawing.Point(129, 366);
this.modifiedDateDateTimePicker.Name =
"modifiedDateDateTimePicker";
this.modifiedDateDateTimePicker.Size = new
System.Drawing.Size(200, 20);
this.modifiedDateDateTimePicker.TabIndex = 25;
//
// taMTask
//
this.taMTask.ClearBeforeFill = true;
//
// taMeasureUnit
//
this.taMeasureUnit.ClearBeforeFill = true;
//
// taMeasureDim
//
this.taMeasureDim.ClearBeforeFill = true;
//
// bsMeasureDim
//
this.bsMeasureDim.DataMember = "MeasureDim";
this.bsMeasureDim.DataSource = this.dataSetHipAdmin;
this.bsMeasureDim.Sort = "ord";
//
// bsMeasureUnit
//
this.bsMeasureUnit.DataMember = "FK_MeasureUnit_MeasureDim";
this.bsMeasureUnit.DataSource = this.bsMeasureDim;
this.bsMeasureUnit.Sort = "ord";
//
// fkMeasureDimIDComboBox
//
this.fkMeasureDimIDComboBox.DataBindings.Add(new
System.Windows.Forms.Binding("SelectedValue", this.bsMTask,
"fkMeasureDimID", true));
this.fkMeasureDimIDComboBox.DataSource = this.bsMeasureDim;
this.fkMeasureDimIDComboBox.DisplayMember = "Dimension";
this.fkMeasureDimIDComboBox.DropDownStyle =
System.Windows.Forms.ComboBoxStyle.DropDownList;
this.fkMeasureDimIDComboBox.FormattingEnabled = true;
this.fkMeasureDimIDComboBox.Location = new
System.Drawing.Point(129, 120);
this.fkMeasureDimIDComboBox.Name = "fkMeasureDimIDComboBox";
this.fkMeasureDimIDComboBox.Size = new System.Drawing.Size(200,
21);
this.fkMeasureDimIDComboBox.TabIndex = 9;
this.fkMeasureDimIDComboBox.ValueMember = "pkMeasureDimID";
this.fkMeasureDimIDComboBox.SelectedValueChanged += new
System.EventHandler(this.EditsBegun);
//
// fkMeasureUnitIDComboBox
//
this.fkMeasureUnitIDComboBox.DataBindings.Add(new
System.Windows.Forms.Binding("SelectedValue", this.bsMTask,
"fkMeasureUnitID", true));
this.fkMeasureUnitIDComboBox.DataSource = this.bsMeasureUnit;
this.fkMeasureUnitIDComboBox.DisplayMember = "Unit";
this.fkMeasureUnitIDComboBox.DropDownStyle =
System.Windows.Forms.ComboBoxStyle.DropDownList;
this.fkMeasureUnitIDComboBox.FormattingEnabled = true;
this.fkMeasureUnitIDComboBox.Location = new
System.Drawing.Point(129, 146);
this.fkMeasureUnitIDComboBox.Name = "fkMeasureUnitIDComboBox";
this.fkMeasureUnitIDComboBox.Size = new System.Drawing.Size(200,
21);
this.fkMeasureUnitIDComboBox.TabIndex = 11;
this.fkMeasureUnitIDComboBox.ValueMember = "pkMeasureUnitID";
this.fkMeasureUnitIDComboBox.SelectedValueChanged += new
System.EventHandler(this.EditsBegun);
//
// fkPhaseIDComboBox
//
this.fkPhaseIDComboBox.DataBindings.Add(new
System.Windows.Forms.Binding("SelectedValue", this.bsMTask, "fkPhaseID",
true));
this.fkPhaseIDComboBox.DataSource = this.bsPhase;
this.fkPhaseIDComboBox.DisplayMember = "Phase";
this.fkPhaseIDComboBox.DropDownStyle =
System.Windows.Forms.ComboBoxStyle.DropDownList;
this.fkPhaseIDComboBox.FormattingEnabled = true;
this.fkPhaseIDComboBox.Location = new System.Drawing.Point(129,
68);
this.fkPhaseIDComboBox.Name = "fkPhaseIDComboBox";
this.fkPhaseIDComboBox.Size = new System.Drawing.Size(200, 21);
this.fkPhaseIDComboBox.TabIndex = 5;
this.fkPhaseIDComboBox.ValueMember = "pkPhaseID";
this.fkPhaseIDComboBox.SelectedValueChanged += new
System.EventHandler(this.EditsBegun);
//
// bsPhase
//
this.bsPhase.DataMember = "Phase";
this.bsPhase.DataSource = this.dataSetHipAdmin;
this.bsPhase.Sort = "ord";
//
// taPhase
//
this.taPhase.ClearBeforeFill = true;
//
// AddEditMasterTask
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(612, 456);
this.Controls.Add(fkPhaseIDLabel1);
this.Controls.Add(this.fkPhaseIDComboBox);
this.Controls.Add(fkMeasureUnitIDLabel);
this.Controls.Add(this.fkMeasureUnitIDComboBox);
this.Controls.Add(fkMeasureDimIDLabel);
this.Controls.Add(this.fkMeasureDimIDComboBox);
this.Controls.Add(pkMTaskIDLabel);
this.Controls.Add(this.pkMTaskIDTextBox);
this.Controls.Add(descriptionLabel);
this.Controls.Add(this.descriptionTextBox);
this.Controls.Add(baseTimeLabel);
this.Controls.Add(this.baseTimeTextBox);
this.Controls.Add(allowParticipationLabel);
this.Controls.Add(this.allowParticipationCheckBox);
this.Controls.Add(allowQuantityLabel);
this.Controls.Add(this.allowQuantityCheckBox);
this.Controls.Add(ordLabel);
this.Controls.Add(this.ordTextBox);
this.Controls.Add(configuredDisplayLabel);
this.Controls.Add(this.configuredDisplayCheckBox);
this.Controls.Add(contractorCommentsLabel);
this.Controls.Add(this.contractorCommentsTextBox);
this.Controls.Add(modifiedDateLabel);
this.Controls.Add(this.modifiedDateDateTimePicker);
this.Name = "AddEditMasterTask";
this.Text = "AddEditMTask";
this.Controls.SetChildIndex(this.btnNew, 0);
this.Controls.SetChildIndex(this.btnDelete, 0);
this.Controls.SetChildIndex(this.btnSave, 0);
this.Controls.SetChildIndex(this.btnCancel, 0);
this.Controls.SetChildIndex(this.lblDialogTitle, 0);
this.Controls.SetChildIndex(this.modifiedDateDateTimePicker, 0);
this.Controls.SetChildIndex(modifiedDateLabel, 0);
this.Controls.SetChildIndex(this.contractorCommentsTextBox, 0);
this.Controls.SetChildIndex(contractorCommentsLabel, 0);
this.Controls.SetChildIndex(this.configuredDisplayCheckBox, 0);
this.Controls.SetChildIndex(configuredDisplayLabel, 0);
this.Controls.SetChildIndex(this.ordTextBox, 0);
this.Controls.SetChildIndex(ordLabel, 0);
this.Controls.SetChildIndex(this.allowQuantityCheckBox, 0);
this.Controls.SetChildIndex(allowQuantityLabel, 0);
this.Controls.SetChildIndex(this.allowParticipationCheckBox, 0);
this.Controls.SetChildIndex(allowParticipationLabel, 0);
this.Controls.SetChildIndex(this.baseTimeTextBox, 0);
this.Controls.SetChildIndex(baseTimeLabel, 0);
this.Controls.SetChildIndex(this.descriptionTextBox, 0);
this.Controls.SetChildIndex(descriptionLabel, 0);
this.Controls.SetChildIndex(this.pkMTaskIDTextBox, 0);
this.Controls.SetChildIndex(pkMTaskIDLabel, 0);
this.Controls.SetChildIndex(this.fkMeasureDimIDComboBox, 0);
this.Controls.SetChildIndex(fkMeasureDimIDLabel, 0);
this.Controls.SetChildIndex(this.fkMeasureUnitIDComboBox, 0);
this.Controls.SetChildIndex(fkMeasureUnitIDLabel, 0);
this.Controls.SetChildIndex(this.fkPhaseIDComboBox, 0);
this.Controls.SetChildIndex(fkPhaseIDLabel1, 0);
((System.ComponentModel.ISupportInitialize)(this.dataSetHipAdmin)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bsMTask)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bsMeasureDim)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bsMeasureUnit)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bsPhase)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();

}

#endregion

private HIPAdminAccess.DataSetHipAdmin dataSetHipAdmin;
private System.Windows.Forms.BindingSource bsMTask;
private System.Windows.Forms.TextBox pkMTaskIDTextBox;
private System.Windows.Forms.TextBox descriptionTextBox;
private System.Windows.Forms.TextBox baseTimeTextBox;
private System.Windows.Forms.CheckBox allowParticipationCheckBox;
private System.Windows.Forms.CheckBox allowQuantityCheckBox;
private System.Windows.Forms.TextBox ordTextBox;
private System.Windows.Forms.CheckBox configuredDisplayCheckBox;
private System.Windows.Forms.TextBox contractorCommentsTextBox;
private System.Windows.Forms.DateTimePicker
modifiedDateDateTimePicker;
private
HIPAdminAccess.DataSetHipAdminTableAdapters.MTaskTableAdapter taMTask;
private System.Windows.Forms.BindingSource bsMeasureDim;
private System.Windows.Forms.BindingSource bsMeasureUnit;
private
HIPAdminAccess.DataSetHipAdminTableAdapters.MeasureUnitTableAdapter
taMeasureUnit;
private
HIPAdminAccess.DataSetHipAdminTableAdapters.MeasureDimTableAdapter
taMeasureDim;
private System.Windows.Forms.ComboBox fkMeasureDimIDComboBox;
private System.Windows.Forms.ComboBox fkMeasureUnitIDComboBox;
private System.Windows.Forms.ToolTip toolTip1;
private System.Windows.Forms.ComboBox fkPhaseIDComboBox;
private System.Windows.Forms.BindingSource bsPhase;
private
HIPAdminAccess.DataSetHipAdminTableAdapters.PhaseTableAdapter taPhase;
}
}

=================== data table

CREATE TABLE [Business].[MTask](
[pkMTaskID] [int] IDENTITY(1,1) NOT NULL,
[fkPhaseID] [smallint] NOT NULL,
[Description] [varchar](100) NOT NULL,
[fkMeasureDimID] [smallint] NOT NULL CONSTRAINT [DF_MTask_fkDimensionID]
DEFAULT ((1)),
[fkMeasureUnitID] [smallint] NOT NULL CONSTRAINT [DF_MTask_fkUnitID]
DEFAULT ((1)),
[BaseTime] [numeric](4, 1) NOT NULL CONSTRAINT [DF_MTask_BaseTime] DEFAULT
((0)),
[AllowParticipation] [bit] NOT NULL CONSTRAINT
[DF_MTask_AllowParticipation] DEFAULT ((0)),
[AllowQuantity] [bit] NOT NULL CONSTRAINT [DF_MTask_AllowQuantity] DEFAULT
((0)),
[Ord] [smallint] NOT NULL CONSTRAINT [DF_MTask_mstrOrd] DEFAULT ((0)),
[ConfiguredDisplay] [bit] NOT NULL CONSTRAINT [DF_MTask_mstrHide] DEFAULT
((0)),
[ContractorComments] [varchar](255) NOT NULL,
[ModifiedDate] [smalldatetime] NOT NULL,
[Rowversion] [timestamp] NOT NULL,
CONSTRAINT [PK_MTask] PRIMARY KEY CLUSTERED
) ON [PRIMARY]

======================

How do I get the default value within the DateTimePicker of the bound
control to update to the underlying database?

Doug
 
D

dbuchanan

Jeffrey,

! ! ! Let me change the form of the question ! ! !

After experimenting learned more about the nature of the problem - thus the
subject line is appended;

These considerations are important
.. When I open the form it displays the current record. I then click the
[New] button which clears the binding source with this code statement:

bsMTask.AddNew();

That clears the DateTimePicker value. I did not realize this when I created
this posted.

Even though I execure AdNew() the DateTimePicker look like it is holding a
date, however it is actually empty. That is why I am getting the error
"Column 'ModfiedDate' does not allow nulls."

My solution is simply to supply the current date and time for the control.

How do I do this?
What is the syntax?
(I've looked for this without success.)

Thank you,
Doug
 
J

Jeffrey Tan[MSFT]

Hi Doug,

Thanks for your effect of finding the pattern!

Yes, by calling BindingSource.AddNew() with BindingSource.EndEdit(). I can
reproduce this exception. Actually, this exception is not tied to
DateTimePicker control, if you try to bind to the other controls you will
also get this exception.

The internal work of BindingSource.AddNew() is documented below:
http://msdn2.microsoft.com/en-us/library/system.windows.forms.bindingsource.
addnew.aspx

BindingSource.AddNew() will add a new record with all columns with null
values. If any column of your DataTable has set AllowDBNull property to
false, you will see the exception. This makes sense because your
schema(AllowDBNull) does not accept null values, but you are adding null
values.

To resolve this problem, you may either set all the columns' AllowDBNull
property to true or handling the BindingSource.AddingNew event by providing
a non-null value as the new record, like this:

DataTable dt;
private void Form1_Load(object sender, EventArgs e)
{
dt =new DataTable();
dt.Columns.Add(new DataColumn("column1", typeof(int)));
dt.Columns.Add(new DataColumn("column2", typeof(DateTime)));
dt.Columns["column2"].AllowDBNull = false;

for(int i=0;i<5;i++)
{
DataRow dr=dt.NewRow();
dr["column1"]=i;
dr["column2"]=DateTime.Now.AddDays(i);
dt.Rows.Add(dr);
}
this.bindingSource1.DataSource= dt;
this.dateTimePicker1.DataBindings.Add(
new Binding("Value", this.bindingSource1, "column2", true));

this.bindingSource1.AddingNew += new
AddingNewEventHandler(bindingSource1_AddingNew);
}

void bindingSource1_AddingNew(object sender, AddingNewEventArgs e)
{
DataRowView drv = dt.DefaultView.AddNew();
drv["column1"] = 0;
drv["column2"] = DateTime.Now;
e.NewObject = drv;
}

Using the sample code above, it works well now. Hope it helps.

Best regards,
Jeffrey Tan
Microsoft Online Community Support
==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top