2

我有一个带有链接按钮的网格视图,当您单击它时,会出现一个模态弹出窗口,其中包含单击的行的详细信息。如果 gridview 不在更新面板中,这可以正常工作。我必须每秒更新一次gridview。如果我使用更新面板,模态弹出窗口显示为空白。关于如何让它在更新面板中工作的任何想法?

<div class="Info">
<asp:UpdatePanel ID="UpdatePanelMain" runat="server" UpdateMode="Conditional">
    <ContentTemplate>

        <asp:GridView ID="gvMain" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None"
            Width="688px" AllowPaging="True" AutoGenerateColumns="false" OnSelectedIndexChanged="gvMain_SelectedIndexChanged"
            Font-Size="14px" PageSize="8" DataKeyNames="TicketId, TicketNumber"
            OnRowCommand="gvMain_RowCommand" OnPageIndexChanging="gvMain_PageIndexChanging"
            OnRowDataBound="gvMain_RowDataBound">
            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
            <Columns>
                <asp:CommandField ShowSelectButton="True" />
                <asp:BoundField DataField="TicketId" HeaderText="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>
                <asp:BoundField DataField="DisplayNum" HeaderText="Ticket Number" SortExpression="DisplayNum">
                    <ItemStyle HorizontalAlign="Center" />
                </asp:BoundField>                   
                <asp:TemplateField>
                    <ItemTemplate>                     
                        <asp:LinkButton ID="lbTicketInfo" runat="server" CommandName="Popup" OnClick="lblTicketInfo_Click">LinkButton</asp:LinkButton>
                    </ItemTemplate>
                    <ItemStyle HorizontalAlign="Center" />
                </asp:TemplateField>
            </Columns>              
        </asp:GridView>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="TimerGVMain" />
    </Triggers>
</asp:UpdatePanel>
<asp:Timer ID="TimerGVMain" Interval="1000" runat="server" OnTick="TimerGVMain_Tick">
</asp:Timer>
<%--Used for modal popup--%>
<asp:Button ID="btnTarget" runat="server" Style="display: none;" />
<asp:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="btnTarget"
    PopupControlID="Div1" DropShadow="True" CancelControlID="btnCloseModal" Drag="True">
</asp:ModalPopupExtender>
<div id="Div1" runat="server" style="background-color: #5D7B9D; color: White; border: #284775 3px solid;
    width: 300px; height: 150px; font-size: 10pt; font-family: Verdana;">
    <asp:Label ID="Label2" runat="server" Text=""></asp:Label>
    <asp:GridView ID="gvTicketInfo" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None"
        AutoGenerateColumns="False">
        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        <Columns>
            <asp:BoundField DataField="Desc" HeaderText="Trans Type" SortExpression="Desc" />
            <asp:BoundField DataField="Time" HeaderText="Est Trans Time" SortExpression="Time" />
        </Columns>
    </asp:GridView>
    <%--Button used to close Modal Pop up--%>
    <asp:Button ID="btnCloseModal" runat="server" Text="Close" />
</div>

aspx.cs

 protected void gvMain_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        RowIndex = Convert.ToInt32(e.CommandArgument);

        if (e.CommandName == "Popup" && e.CommandArgument != null)
        {

           string displayNo = gvMain.Rows[RowIndex].Cells[3].Text;
           //string displayNo = gvMain.DataKeyNames[RowIndex]["DisplayNum"].ToString();
           ModalPopupExtender1.Show();
           try
           {
               using (SqlConnection cs = new SqlConnection(connStr))
               {
                   SqlDataAdapter da = new SqlDataAdapter("spClerkUI_ShowAllTrans_inTicket", cs);
                   da.SelectCommand.CommandType = System.Data.CommandType.StoredProcedure;
                   da.SelectCommand.Parameters.AddWithValue("@Location", qStatic);
                   da.SelectCommand.Parameters.AddWithValue("@DisplayNum", displayNo);

                   DataSet ds = new DataSet();
                   da.Fill(ds);
                   gvTicketInfo.DataSource = ds;
                   gvTicketInfo.DataBind();

                   Label1.Text = string.Format("<Br>Row # {0}", RowIndex);
               }
           }
           catch (Exception ex)
           {
               lblStatus.Text = "Modal Error: " + ex.ToString();
           }
        }

    }

protected void gvMain_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            LinkButton ImageButtonTicketInfo = (LinkButton)e.Row.FindControl("lbTicketInfo");
            ImageButtonTicketInfo.CommandArgument = e.Row.RowIndex.ToString();
        }
    }
4

2 回答 2

0

我认为计时器需要在更新面板内

于 2014-04-23T18:55:34.170 回答
0

在页面目录之后添加这个

<%@ Register TagPrefix="ajaxToolkit" Namespace="AjaxControlToolkit" Assembly="AjaxControlToolkit" %>

并放置ModalPopupExtender1.Show();在 try 块中

并添加

Div1.Visible = true;    
gvTicketInfo.Visible = true;
于 2014-01-29T14:17:24.670 回答