подскажите, как в коде C# получить доступ к клиентскому элементу (например, <input type='hidden'>), а затем исполнить java-скрипт, который бы брал значение из инпута ?? заранее благодарен
Здравствуйте, Аноним, Вы писали:
А>подскажите, как в коде C# получить доступ к клиентскому элементу (например, <input type='hidden'>), а затем исполнить java-скрипт, который бы брал значение из инпута ?? заранее благодарен
Пометить input аттрибутом runat="server" и задать ему id:
если контрол не делать серверным, то значение будет доступно в коллекцию Request.Params по индексатору, заданному аттрибутом name контрола.
на клиенте:
<input type="hidden" name="myCtrlName" />
на сервере:
String myValue = Request["myCtrlName"];
если даже не делать контрол ни серверным, ни задвать ему аттрибут name, то значение всеравно будет доступно из вышеупомянтой коллекции через целочисленный индексатор, но в общем случае индекс, по понятным причинам негопределен, а по сему, практического смысла в этом я не вижу.
Здравствуйте, starnov, Вы писали:
S>получается, что на сервере я могу только читать, а изменять не могу? т.е. вопрос такой — можно ли изменить значение myCtrl.value из C#?
конечно можно, если он серверный (помечен аттрибутом runat="server"):
S>мне нужно данные из базы передать странице и записать их в input, для того, чтобы скрипт взял оттуда данные и выполнил какую-то процедуру
ок. Теперь все прояснилось.
Когда помечаешь делаешь тэг серверным, то его идентификатор на клиентской машине далек от того, какой ты присвоишь ему аттрибутом "ID". Значение клинетского ID содержится в свойстве твоего контрола ClientID. Соответственно, присваиваешь на сервере скрытому полю то значение, которое хочешь, а в клиентском скрипте пишешь так:
<script type="text/jscript">
function processValue()
{
var hInput = document.getElementById("<%= myCtrl.ClientID %>");
alert(hInput.value);
}
</script>
вместо конструкции, заключенной спец.тэгами "<%= ... %>" сервем подставит действительное значение клиентского ID твоего контрола.
Здравствуйте, leleophan, Вы писали:
S>>мне нужно данные из базы передать странице и записать их в input, для того, чтобы скрипт взял оттуда данные и выполнил какую-то процедуру
L>ок. Теперь все прояснилось.
L>Когда помечаешь делаешь тэг серверным, то его идентификатор на клиентской машине далек от того, какой ты присвоишь ему аттрибутом "ID". Значение клинетского ID содержится в свойстве твоего контрола ClientID. Соответственно, присваиваешь на сервере скрытому полю то значение, которое хочешь, а в клиентском скрипте пишешь так:
L>
еще вопрос один возник. вы не знаете случайно, как можно на кнопку <input type="button" runat="server"> либо <asp:Button> повесить событие OnClick, чтобы сначала выполнялся серверный код (C#, выборка данных из базы и записать в hidden'ы), а только затем — клиентский onclick (либо какой-то альтернативный вызов JavaScript-функции) ? заранее благодарен
S>еще вопрос один возник. вы не знаете случайно, как можно на кнопку <input type="button" runat="server"> либо <asp:Button> повесить событие OnClick, чтобы сначала выполнялся серверный код (C#, выборка данных из базы и записать в hidden'ы), а только затем — клиентский onclick (либо какой-то альтернативный вызов JavaScript-функции) ? заранее благодарен
Тогда не вешай на кнопку никаких клиентских обработчиков. В серверном событии OnClick после заполнения контрола данными:
Здравствуйте, leleophan, Вы писали:
S>>еще вопрос один возник. вы не знаете случайно, как можно на кнопку <input type="button" runat="server"> либо <asp:Button> повесить событие OnClick, чтобы сначала выполнялся серверный код (C#, выборка данных из базы и записать в hidden'ы), а только затем — клиентский onclick (либо какой-то альтернативный вызов JavaScript-функции) ? заранее благодарен
L>Тогда не вешай на кнопку никаких клиентских обработчиков. В серверном событии OnClick после заполнения контрола данными:
L>