string GeneratePredictableClientID ()
{
string myID = ID;
bool haveMyID = !String.IsNullOrEmpty (myID);
char separator = ClientIDSeparator;
var sb = new StringBuilder ();
Control container = NamingContainer;
if (this is INamingContainer && !haveMyID) {
if (container != null)
EnsureIDInternal ();
myID = _userId;
}
if (container != null && container != Page) {
string containerID = container.ID;
if (!String.IsNullOrEmpty (containerID)) {
sb.Append (container.GetClientID ());
sb.Append (separator);
} else {
sb.Append (container.GeneratePredictableClientID ());
if (sb.Length > 0)
sb.Append (separator);
}
}
if (!haveMyID) {
if (this is INamingContainer || !AutoID)
sb.Append (myID);
else {
int length = sb.Length;
if (length > 0 && sb [length - 1] == separator)
sb.Length = length - 1;
}
return sb.ToString ();
}
sb.Append (myID);
IDataItemContainer dataItemContainer = DataItemContainer as IDataItemContainer;
if (dataItemContainer == null)
return sb.ToString ();
IDataKeysControl dataKeysContainer = DataKeysContainer as IDataKeysControl;
GetDataBoundControlFieldValue (sb, separator, dataItemContainer, dataKeysContainer);
return sb.ToString ();
}