Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / Windows Forms / WinForm General / October 2007

Tip: Looking for answers? Try searching our database.

Binding DateTimePicker question

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
dbuchanan - 27 Sep 2007 03:15 GMT
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
Jeffrey Tan[MSFT] - 27 Sep 2007 07:51 GMT
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.
dbuchanan - 28 Sep 2007 02:48 GMT
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
dbuchanan - 28 Sep 2007 03:11 GMT
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
Jeffrey Tan[MSFT] - 28 Sep 2007 09:52 GMT
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.
dbuchanan - 05 Oct 2007 03:49 GMT
Jeffrey,

Thank you,
Doug
Eric Moreau - 27 Sep 2007 10:56 GMT
Have a look at
http://www.emoreau.com/Entries/Articles/2005/01/The-DateTimePicker-control.aspx

Signature

HTH

Éric Moreau, MCSD, Visual Developer - Visual Basic MVP
Conseiller Principal / Senior Consultant
Moer inc. (http://www.emoreau.com)
Membre du réseau .NET Expertise  www.dotnet-expertise.com

> Hello,
>
[quoted text clipped - 65 lines]
>
> Doug

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.