Hi Andrew. You need use DynamicDataFields, where you must place code for INSERT event into file named like this one: YOUDATAFIELDCONTROL_INSERT.
Look at the codes from three files that i wrote for example, may be it will more clear. The names files are next:
- DateAjax.ascx
- DateAjax_Edit.ascx
- DateAjax_Insert.ascx
Code of DateAjax.ascx:
<%@ Control Language="C#" Inherits="System.Web.DynamicData.FieldTemplateUserControlBase" %>
<script runat="server">
</script>
<%# string.Format("{0:d}", DataValue)%>
Code of DateAjax_Edit.ascx:
<%@ Control Language="C#" Inherits="System.Web.DynamicData.FieldTemplateUserControlBase" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e) {
TextBox1.ToolTip = MetaMember.Description;
SetupRequiredFieldValidator(reqName);
SetupDynamicValidator(dynamicValidator);
}
protected override void ExtractValues(IOrderedDictionary dictionary) {
if (TextBox1.Text == "")
{
TextBox1.Text = DateTime.Today.Date.ToString();
}
dictionary[DataField] = ConvertEditedValue(TextBox1.Text);
}
</script>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# string.Format("{0:d}", DataValue) %>' Columns="20"></asp:TextBox>
<asp:RequiredFieldValidator runat="server" ID="reqName" ControlToValidate="TextBox1" Display="Dynamic" Enabled="false" />
<asp:DynamicValidator runat="server" ID="dynamicValidator" ControlToValidate="TextBox1" Display="Dynamic" />
<ajaxToolkit:CalendarExtender ID="CalendarExtender1" runat="server"
TargetControlID="TextBox1"
Format="dd.MM.yyyy"
>
</ajaxToolkit:CalendarExtender>
Code of DateAjax_Insert.ascx:
<%@ Control Language="C#" Inherits="System.Web.DynamicData.FieldTemplateUserControlBase" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e) {
TextBox1.ToolTip = MetaMember.Description;
SetupRequiredFieldValidator(reqName);
SetupDynamicValidator(dynamicValidator);
}
protected override void ExtractValues(IOrderedDictionary dictionary) {
dictionary[DataField] = ConvertEditedValue(TextBox1.Text);
}
</script>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# string.Format("{0:d}", DateTime.Today) %>' Columns="20"></asp:TextBox>
<asp:RequiredFieldValidator runat="server" ID="reqName" ControlToValidate="TextBox1" Display="Dynamic" Enabled="false" />
<asp:DynamicValidator runat="server" ID="dynamicValidator" ControlToValidate="TextBox1" Display="Dynamic" />
<ajaxToolkit:CalendarExtender ID="CalendarExtender1" runat="server"
TargetControlID="TextBox1"
Format="dd.MM.yyyy"
>
</ajaxToolkit:CalendarExtender>
To use that controls into your project you must map it by by RenderHint Attribute for the partial class of your needing table object. You can do it by creating cs file in App_Code folder of your web project for example.
Please, look at the example of this code:
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Web.DynamicData;
[RenderHint("Date", "DateAjax")] // This is your implementation of behavior when the select or edit or insert method will works by RenderHint Attribute
[RenderHint("Filename", "FileImage")]
[ImageUrl("Filename", "~/images/{0}")]
[ImageFormat("Filename", 100, 100)]
[ImageEnabled("Filename", "jpg,gif,png,bmp,tif")]
public partial class FilePicture
{
}
You can download project and find it there to execute it by VS2008 Express.
Sincerely, LukCAD