Вы должны использовать &
вместо ?
после первого использования. Как это:
<a href="mailto:<?php echo $v['email']; ?>?subject=<?php echo 'subject here'; ?>&body=<?php echo 'your email is approved'; ?>"><i class="icon-envelope"></i></a>
Это кажется на добавление средств управления в конструкторе. Возможно, добавьте столбцы немного позже - возможно, что-то как переопределение OnParentChanged
; Вы затем сможете проверить DesignMode
таким образом, Вы только добавляете столбцы во время выполнения (не во время дизайна).
Я видел это поведение прежде для ComboBox со свойством Items, и это действительно печально. Вот то, как я обошел его с ComboBox. Необходимо смочь применить это к DataGridView.
Я создал "новое" свойство под названием Объекты и установил его, чтобы не быть доступным для просмотра и быть явно быть скрытым от сериализации. Под капотом это просто получает доступ к реальному свойству Items.
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new ObjectCollection Items
{
get { return ((ComboBox)this).Items; }
}
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new object DataSource
{
get { return ((ComboBox)this).DataSource; }
Mark был прав. Разработчик смотрит на конструктора для этого поведения автоматической генерации. Вот то, как я обошел его.
Взял код, который создает/связывает DataTable к DataGridView из конструктора и поместил его в метод.
Используя Load
событие на содержании формируется - который содержит несколько DataGridView
s звонят BindData()
метод на каждом экземпляре,
List<Control> childControls = Misc.Misc.GetAllChildControls(this);
foreach (Control ctrl in childControls) {
if (ctrl is WorksheetGridView) {
WorksheetGridView wsgv = ctrl as WorksheetGridView;
wsgv.BindData();
}
}
где GetAllChildControls
метод в классе помощника
internal static List<Control> GetAllChildControls(Control topControl)
{
List<Control> ctrlStore = new List<Control>();
ctrlStore.Add(topControl);
if (topControl.HasChildren)
{
foreach (Control ctrl in topControl.Controls)
{
ctrlStore.AddRange(GetAllChildControls(ctrl)); }
}
}
return ctrlStore;
}
Извините, если это явно, но я никогда не хочу забыть, как сделать это!
Я часто делаю это в моих пользовательских элементах управления, если Вы переносите код, Вы не хотите выполняться в разработчике в проверке DesignMode, он должен решить Ваши проблемы.
if (!DesignMode)
{
// Your code here
}