Добавить элементы в таблицу из потока в asp.net - PullRequest
1 голос
/ 14 августа 2010

У меня есть таблица HTML, к которой я добавляю элементы из javascript при обратном вызове ASP.NET при нажатии кнопки.

HTML:

<%@ Page Language="C#" CodeFile="Hello5.aspx.cs" Inherits="ClientCallback" %>
<html>
<head>
  <script>
    function AddResult()
    {
        GetResults("blah", "");
    }
    function UpdateTable(itemText)
    {
        var mytable = document.getElementById("mytable");
        var rowID = mytable.rows.length;
        var newrow = mytable.insertRow(rowID);
        newrow.insertCell(0).appendChild(document.createTextNode(rowID));
        newrow.insertCell(1).appendChild(document.createTextNode(itemText));
    }
  </script>
</head>
<body>
    <form id="form1" runat="server" />
    <input type="button" onclick="AddResult()" value="Add Result" />
    <table border="1" id="mytable">
        <th colspan="2">Results</th>
    </table>
</body>
</html>

Codebehind:

public partial class ClientCallback : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
{
    string _inputVal;
    protected void Page_Load(object sender, EventArgs e)
    {
        string cbReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "UpdateTable", "context");
        string callbackScript = "function GetResults(arg, context)" + "{ " + cbReference + "} ;";
        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "GetResults", callbackScript, true);
    }
    void ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)
    {
        _inputVal = eventArgument;
    }
    string ICallbackEventHandler.GetCallbackResult()
    {
        return _inputVal + " " + DateTime.Now.ToString();
    }
}

Эта система обратного вызова работает нормально, но это не совсем то, что я хотел.

У меня есть функция C # для вычисления набора результатов на основе заданного числа ввода. Это может занять много времени, поэтому я хочу запустить его в потоке и обновлять таблицу при получении нового результата.

Но я не могу понять, как вызвать javascript из моего потока C # ... есть идеи?

1 Ответ

1 голос
/ 14 августа 2010

Вы не можете отправить уведомление с сервера клиенту, когда поток завершается.Единственный способ - заставить клиента периодически запрашивать сервер (с помощью ajax или обновления страницы), чтобы проверить, доступен ли результат потока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...