.NET Forum / Windows Forms / WinForm General / October 2007
Binding DateTimePicker question
|
|
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 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 MagazinesGet 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 ...
|
|
|