当多个用户在Gridview中选择同一行时,出现Java脚本弹出框 - c#

我有很多行的gridview与第一行的SELECT链接。一次许多用户使用gridview。当两个用户同时单击同一行时,将向一个职员显示一个弹出框,表明一个项目是由另一个用户选择的。

我下面有这个JavaScript代码,但没有显示弹出框。

 protected void gvTypes_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (condition)
     {                   
           StringBuilder sb = new StringBuilder();
           sb.Append("<script type = 'text/javascript'>");
           sb.Append("window.onload=function(){");
           sb.Append("alert('");
           sb.Append("The following item has been chosen by another user. Please choose another one. \\n\\n" + row.Cells[3].Text + "\\n");
           sb.Append("')};");
           sb.Append("</script>");
           ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", sb.ToString());
      }
  }

网格视图

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                <ContentTemplate>                      
                    <asp:GridView ID="gvTypes" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None"
                        Width="688px" AllowPaging="True" AutoGenerateColumns="false" OnSelectedIndexChanged="gvTypes_SelectedIndexChanged"
                        Font-Size="14px" PageSize="11" DataKeyNames="TicketId, TicketNumber, LinkedTicketId"
                        OnRowCommand="gvMain_RowCommand" OnPageIndexChanging="gvMain_PageIndexChanging">
                        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                        <Columns>
                            <asp:CommandField ShowSelectButton="True"/>
                            <asp:BoundField DataField="TicketId" HeaderText="Ticket Id" SortExpression="TicketId"
                                Visible="false">
                                <ItemStyle HorizontalAlign="Center" />
                            </asp:BoundField>
                            <asp:BoundField DataField="TicketNumber" HeaderText="Ticket #Id" SortExpression="TicketNumber"
                                Visible="false">
                                <ItemStyle HorizontalAlign="Center" />
                            </asp:BoundField>
                        </Columns>
                        <EditRowStyle BackColor="#999999" />
                    </asp:GridView>
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="TimerGVMain" />
                </Triggers>
            </asp:UpdatePanel>
            <asp:Timer ID="Timer1" Interval="5200" runat="server" OnTick="TimerGVMain_Tick">
            </asp:Timer>

参考方案

我不确定您的其余代码,但是根据问题所在,如果您将脚本注册到ScriptManager,它应该可以工作:

protected void gvTypes_SelectedIndexChanged(object sender, EventArgs e)
{
    if (condition)
    {                   
        StringBuilder sb = new StringBuilder();
        // Using function pageLoad() to execute the script 
        // whenever the page is fully or partially loaded (AJAX).
        sb.Append("function pageLoad() {");
        sb.Append("alert('");
        sb.Append("The following item has been chosen by another user. Please choose another one. \\n\\n" + row.Cells[3].Text + "\\n");
        sb.Append("')}");
        // UpdatePanel1 needs to be replaced with your UpdatePanel ID.
        ScriptManager.RegisterClientScriptBlock(UpdatePanel1, typeof(UpdatePanel), "alert", sb.ToString(), true);
    }
}

MSDN ScriptManager.RegisterClientScriptBlock

编辑

您可以通过将Timer移到UpdatePanel内来略微更改标记:

<ContentTemplate>
    <asp:Timer ID="Timer1" Interval="5200" runat="server" OnTick="TimerGVMain_Tick"></asp:Timer>
</ContentTemplate>

并删除Triggers

<!--<Triggers>
    <asp:AsyncPostBackTrigger ControlID="TimerGVMain" />
</Triggers>-->

编辑2

或者,您可以保留Timer的位置,并通过为Triggers添加EventName来更改Timer

<Triggers>
    <asp:AsyncPostBackTrigger ControlID="TimerGVMain" EventName="Tick" />
</Triggers>

Asp.net发送信息表单到页面 - c#

我正在尝试使用弹出窗口中的新信息更新旧页面。到目前为止,我尝试过将结果保存在会话中Session["Data"] = DLvrijecampingplaatsen.SelectedItem; 然后当它达到Page_Load时,将其重新加载回旧页面if (Session["Data"] != null) { LBkies…

与Mootools Scriptmanager Ajax Asp.net发生冲突? - c#

我正在尝试不同的方法来使这项工作成功,但是没有成功。我正在尝试将mootools与asp.net应用程序集成。我只想用它为我的网站添加一些效果。我也使用更新面板,scriptmanager,因为不希望有完整的回发。在控制台上引发错误TypeError:clientID.startsWith不是函数,并且在进行更新时brwoser reset...。这是整个代…

Div单击与单选按钮相同吗? - php

有没有一种方法可以使div上的click事件与表单环境中的单选按钮相同?我只希望下面的div提交值,单选按钮很丑代码输出如下:<input id="radio-2011-06-08" value="2011-06-08" type="radio" name="radio_date&#…

故障排除“警告:session_start():无法发送会话高速缓存限制器-标头已发送” - php

我收到警告:session_start()[function.session-start]:无法发送会话缓存限制器-标头已发送(错误输出开始如果我将表单数据提交到其他文件进行处理,则可以正常工作。但是,如果我将表单数据提交到同一页面,则会出现此错误。请建议<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0…

将python scikit学习模型导出到pmml - python

我想将python scikit-learn模型导出到PMML。哪个python软件包最合适?我阅读了有关Augustus的内容,但是我无法使用scikit-learn模型找到任何示例。 python大神给出的解决方案 SkLearn2PMML是 JPMML-SkLearn命令行应用程序周围的薄包装。有关受支持的Scikit-Learn Estimator和…