Это старый вопрос, но я добавлю альтернативный ответ.
Существует два магических метода
__call($name, $arguments)
запускается при вызове недоступных методов в контексте объекта.
__callStatic($name, $arguments)
срабатывает при вызове недоступных методов в статическом контексте.
<?php
class MethodTest
{
public function __call($name, $arguments)
{
// Note: value of $name is case sensitive.
echo "Calling object method '$name' "
. implode(', ', $arguments). "\n";
}
/** As of PHP 5.3.0 */
public static function __callStatic($name, $arguments)
{
// Note: value of $name is case sensitive.
echo "Calling static method '$name' "
. implode(', ', $arguments). "\n";
}
}
$obj = new MethodTest;
$obj->runTest('in object context');
MethodTest::runTest('in static context'); // As of PHP 5.3.0
Выходы
Вызов метода объекта 'runTest' в контексте объекта
Вызов статического метода 'runTest' в статическом контексте
Если флажки не работают на сервере или инкапсулированы внутри элемента управления, мы можем использовать следующий метод:
protected override void Render(HtmlTextWriter writer)
{
// setup a TextWriter to capture the markup
TextWriter tw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(tw);
// render the markup into our surrogate TextWriter
base.Render(htw);
// get the captured markup as a string
string pageSource = tw.ToString();
string enabledUnchecked = "<input type=\"checkbox\" />";
string disabledChecked = "<input type=\"checkbox\" disabled checked />";
// TODO: need replacing ONLY inside a div with id="uwg"
string updatedPageSource = pageSource;
if (chk_CheckAll.Checked)
{
updatedPageSource = Regex.Replace(pageSource, enabledUnchecked,
disabledChecked, RegexOptions.IgnoreCase);
}
// render the markup into the output stream verbatim
writer.Write(updatedPageSource);
}
Решение взято из здесь .
Наследуйте его, найдите элементы управления в дереве элементов управления и установите соответствующие атрибуты.
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
(this.Controls[6] as CheckBox).Disabled = true;
}
Очевидно, это ненадежно, если элемент управления изменит свой вывод в зависимости от других свойств или если вы обновите библиотека; но если вам нужен обходной путь, это сработает.