Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ASP.NET Новый топик    Ответить
 Сценарии с обратным вызовом  [new]
Roman4ik
Member

Откуда:
Сообщений: 45
string callbackRef = Page.ClientScript.GetCallbackEventReference...

Как это зделать в UserControl? И возможно ли это?

Спасибо.
14 май 06, 13:22    [2661423]     Ответить | Цитировать Сообщить модератору
 Re: Сценарии с обратным вызовом  [new]
vladgrig
Member

Откуда: Латвия, Рига
Сообщений: 3704
автор
Как это зделать в UserControl? И возможно ли это?

<%@ Control Language="VB" ClassName="WebUserControl" %>
<%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %>

<script language="javascript" type="text/javascript">
// <![CDATA[
function returnBoxValue(val) {    
    CallServer(val, "");    
}

function ReceiveServerData(rValue) {
        document.getElementById("info").innerText = rValue;
}

// ]]>
</script>

<script runat="server">
    Protected returnedString As String
    
    Public Function GetCallbackResult() As String Implements System.Web.UI.ICallbackEventHandler.GetCallbackResult
        Return returnedString
    End Function
    
    Public Sub RaiseCallbackEvent(ByVal eventArgument As String) Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
        returnedString = "This string from server: " & eventArgument
    End Sub
    
    Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
                     
        Dim cs As ClientScriptManager = Page.ClientScript
        Dim cstext As String
        Dim csname As String
        
        csname = "CallServer"
        If (Not cs.IsClientScriptBlockRegistered(Me.GetType(), csname)) Then
            cstext = "function CallServer(arg, context) { " & cs.GetCallbackEventReference(Me, "arg", "ReceiveServerData", "context") & "} ;"
            cs.RegisterClientScriptBlock(Me.GetType(), csname, cstext, True)
        End If
                                      
    End Sub
    
</script>

<table border="0" cellpadding="0" cellspacing="0">
    <tr>
        <td>
            <input id="Text1" onkeyup="returnBoxValue(this.value);" type="text" /></td>
    </tr>
    <tr>
        <td>
            <label id="info">
            </label>
        </td>
    </tr>
</table>
а в чём предполагалась сложность?
14 май 06, 14:04    [2661463]     Ответить | Цитировать Сообщить модератору
 Re: Сценарии с обратным вызовом  [new]
Roman4ik
Member

Откуда:
Сообщений: 45
С ложности у меня две:
1) Туго с VB :-)
2) Я так понимаю строчкой Page.ClientScript.GetCallbackEventReference я получаю ссылку на событие на странице и скрипт могу запустить на странице.
И когда я вставляю эту ссылку в свой контрл, я могу запустить скрипт страницы на которой расположен мой контрол, а не скрипт самого контрола.
Дело в том что была страница с работающим кодом. Она брала инфу в инете и отображала в таблице. Я зделала из этой страницы контрол и поместил на новую страницу, вот и появилась проблемка. Код отрабатывает, данные получаю, но визуально не отображаются.
14 май 06, 14:37    [2661507]     Ответить | Цитировать Сообщить модератору
 Re: Сценарии с обратным вызовом  [new]
Roman4ik
Member

Откуда:
Сообщений: 45
И еще у контрола отсутсвует isCallBack, значти у него нет коллбэка? Так зачем GetCallBackEventReference если этого ивента не будет никогда?
14 май 06, 15:18    [2661559]     Ответить | Цитировать Сообщить модератору
 Re: Сценарии с обратным вызовом  [new]
Roman4ik
Member

Откуда:
Сообщений: 45
Работает. Спасибо.
14 май 06, 17:38    [2661791]     Ответить | Цитировать Сообщить модератору
 Re: Сценарии с обратным вызовом  [new]
vladgrig
Member

Откуда: Латвия, Рига
Сообщений: 3704
автор
Работает. Спасибо.

вот видишь - тихо сама собой поговорила и, всё получилось ;)
14 май 06, 22:39    [2662210]     Ответить | Цитировать Сообщить модератору
Все форумы / ASP.NET Ответить