Author: igorz
Date: 2007-07-02 08:58:40 -0400 (Mon, 02 Jul 2007)
New Revision: 81177
Modified:
trunk/mcs/class/System.Web.Extensions/System.Web.UI/ScriptManager.cs
Log:
Implemented RegisterDataItem methods
Modified: trunk/mcs/class/System.Web.Extensions/System.Web.UI/ScriptManager.cs
===================================================================
--- trunk/mcs/class/System.Web.Extensions/System.Web.UI/ScriptManager.cs
2007-07-02 12:29:25 UTC (rev 81176)
+++ trunk/mcs/class/System.Web.Extensions/System.Web.UI/ScriptManager.cs
2007-07-02 12:58:40 UTC (rev 81177)
@@ -107,6 +107,7 @@
bool _enablePartialRendering = true;
bool _init;
string _panelToRefreshID;
+ Dictionary<Control, DataItemEntry> _dataItems;
[DefaultValue (true)]
[Category ("Behavior")]
@@ -610,11 +611,22 @@
}
public void RegisterDataItem (Control control, string dataItem)
{
- throw new NotImplementedException ();
+ RegisterDataItem (control, dataItem, false);
}
public void RegisterDataItem (Control control, string dataItem,
bool isJsonSerialized) {
- throw new NotImplementedException ();
+ if (!IsInAsyncPostBack)
+ throw new InvalidOperationException
("RegisterDataItem can only be called during an async postback.");
+ if (control == null)
+ throw new ArgumentNullException ("control");
+
+ if (_dataItems == null)
+ _dataItems = new Dictionary<Control,
DataItemEntry> ();
+
+ if (_dataItems.ContainsKey (control))
+ throw new ArgumentException (String.Format
("'{0}' already has a data item registered.", control.ID), "control");
+
+ _dataItems.Add (control, new DataItemEntry (dataItem,
isJsonSerialized));
}
public void RegisterDispose (Control control, string
disposeScript) {
@@ -907,6 +919,12 @@
WriteCallbackOutput (output, asyncPostBackTimeout,
null, AsyncPostBackTimeout.ToString ());
WriteCallbackOutput (output, pageTitle, null,
Page.Title);
+ if (_dataItems != null)
+ foreach (Control control in _dataItems.Keys) {
+ DataItemEntry entry = _dataItems
[control];
+ WriteCallbackOutput (output,
entry.IsJsonSerialized ? dataItemJson : dataItem, control.ClientID,
entry.DataItem);
+ }
+
WriteArrayDeclarations (output);
WriteScriptBlocks (output, _clientScriptBlocks);
WriteScriptBlocks (output, _scriptIncludes);
@@ -1205,8 +1223,8 @@
sealed class ScriptReferenceEntry
{
- public readonly Control _control;
- public readonly ScriptReference _scriptReference;
+ readonly Control _control;
+ readonly ScriptReference _scriptReference;
public Control Control { get { return _control; } }
public ScriptReference ScriptReference { get { return
_scriptReference; } }
@@ -1216,5 +1234,19 @@
_scriptReference = scriptReference;
}
}
+
+ sealed class DataItemEntry
+ {
+ readonly string _dataItem;
+ readonly bool _isJsonSerialized;
+
+ public string DataItem { get { return _dataItem; } }
+ public bool IsJsonSerialized { get { return
_isJsonSerialized; } }
+
+ public DataItemEntry (string dataItem, bool
isJsonSerialized) {
+ _dataItem = dataItem;
+ _isJsonSerialized = isJsonSerialized;
+ }
+ }
}
}
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches