Происходит при попытке вызова не- статический метод для класса, поскольку он был статичным, и вы также имеете флаг E_STRICT
в настройках error_reporting()
.
Пример:
class HTML {
public function br() {
echo '
';
}
}
HTML::br()
или $html::br()
Вы действительно можете избежать этой ошибки, не добавляя E_STRICT
к error_reporting()
, например
error_reporting(E_ALL & ~E_STRICT);
, поскольку, как и для PHP 5.4.0 и выше, E_STRICT
включен в E_ALL
[ ref ]. Но это не рекомендуется. Решение состоит в том, чтобы определить вашу предполагаемую статическую функцию как фактическую static
:
public static function br() {
echo '
';
}
или вызвать функцию условно:
$html = new HTML();
$html->br();
Похожие вопросы:
Вы на самом деле не взаимодействуете непосредственно с полосой прокрутки, скорее Вы устанавливаете FirstDisplayedScrollingRowIndex
. Таким образом, прежде чем это перезагружает, получите тот индекс, как только это перезагружается, сбросьте его к тому индексу.
РЕДАКТИРОВАНИЕ: Положительная сторона в комментарии. Если Вы будете использовать DataGridView
тогда, то это будет работать. Если Вы используете старое DataGrid
тогда самый легкий способ сделать, который должен наследоваться ему. Посмотрите здесь: Связь
DataGrid имеет защищенный метод GridVScrolled, который может использоваться для прокрутки сетки к определенной строке. Для использования его получите новую сетку из DataGrid и добавьте метод ScrollToRow.
код C#
public void ScrollToRow(int theRow)
{
//
// Expose the protected GridVScrolled method allowing you
// to programmatically scroll the grid to a particular row.
//
if (DataSource != null)
{
GridVScrolled(this, new ScrollEventArgs(ScrollEventType.LargeIncrement, theRow));
}
}
Да, определенно FirstDisplayedScrollingRowIndex. Необходимо будет получить это значение после некоторого взаимодействия с пользователем, и затем после перезагрузок сетки, Вы захотите задержать его к старому значению.
, Например, если перезагрузка инициирована щелчком кнопки, то в обработчике нажатий кнопки, Вы могли бы хотеть иметь как своя первая строка команда, которая помещает это значение в переменную:
// Get current user scroll position
int scrollPosition = myGridView.FirstDisplayedScrollingRowIndex;
// Do some work
...
// Rebind the grid and reset scrolling
myGridView.DataBind;
myGridView.FirstDisplayedScrollingRowIndex = scrollPosition;