代码之家  ›  专栏  ›  技术社区  ›  SilverLight

Ajax计时器会导致文本选择(RadGrid列标签)丢失

  •  0
  • SilverLight  · 技术社区  · 5 年前

    请查看我的aspx代码:

         <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <telerik:RadGrid ID="grd_transactions" runat="server" GroupPanelPosition="Top" AutoGenerateColumns="False" Skin="WebBlue">
                        <GroupingSettings CollapseAllTooltip="Collapse all groups"></GroupingSettings>
                        <ClientSettings EnableRowHoverStyle="True">
                            <Selecting AllowRowSelect="True" />
                        </ClientSettings>
                        <MasterTableView>
                            <Columns>
                                <telerik:GridTemplateColumn FilterControlAltText="Filter TemplateColumn_Type column" HeaderText="Type" UniqueName="TemplateColumn_Type">
                                    <HeaderStyle Font-Bold="True" Font-Size="Medium" Width="100px" HorizontalAlign="Center" VerticalAlign="Middle" />
                                    <ItemTemplate>
                                        <asp:Label ID="lbl_Type" runat="server" Text='<%# Eval("Type") %>' Font-Size="15px" ToolTip='<%# Eval("Type").ToString() == "Payout" ? "Payout" : "Deposit" %>'></asp:Label>
                                    </ItemTemplate>
                                    <ItemStyle Height="50px" HorizontalAlign="Center" VerticalAlign="Middle" />
                                </telerik:GridTemplateColumn>
                                <telerik:GridTemplateColumn FilterControlAltText="Filter TemplateColumn_Date_Time_UTC_GMT column" HeaderText="Date &amp; Time (UTC/GMT)" UniqueName="TemplateColumn_Date_Time_UTC_GMT">
                                    <HeaderStyle Font-Bold="True" Font-Size="Medium" Width="200px" HorizontalAlign="Center" VerticalAlign="Middle" />
                                    <ItemTemplate>
                                        <asp:Label ID="lbl_Date_Time_UTC_GMT" runat="server" Text='<%# Eval("Date Time UTC GMT") %>' Font-Size="15px" ToolTip="Date &amp; Time (UTC/GMT)"></asp:Label>
                                    </ItemTemplate>
                                    <ItemStyle Height="50px" HorizontalAlign="Center" VerticalAlign="Middle" />
                                </telerik:GridTemplateColumn>
                                <telerik:GridTemplateColumn FilterControlAltText="Filter TemplateColumn_BTC_Investment_Address column" HeaderText="BTC Investment Address" UniqueName="TemplateColumn_BTC_Investment_Address">
                                    <HeaderStyle Font-Bold="True" Font-Size="Medium" Width="450px" HorizontalAlign="Center" VerticalAlign="Middle" />
                                    <ItemTemplate>
                                        <a id="link_BTC_Investment_Address" class="link_BTC_Investment_Address_class" target="_blank" rel="noopener noreferrer" href='<%# Eval("BTC Investment URL") %>'>
                                            <asp:Label ID="lbl_BTC_Investment_Address" runat="server" Text='<%# Eval("BTC Investment Address") %>' Font-Size="15px" ToolTip='<%# Eval("BTC Investment URL") %>'></asp:Label>
                                        </a>
                                    </ItemTemplate>
                                    <ItemStyle Height="50px" HorizontalAlign="Center" VerticalAlign="Middle" />
                                </telerik:GridTemplateColumn>
                                <telerik:GridTemplateColumn FilterControlAltText="Filter TemplateColumn_Deposit_Amount column" HeaderText="Deposit Amount" UniqueName="TemplateColumn_Deposit_Amount">
                                    <HeaderStyle Font-Bold="True" Font-Size="Medium" Width="200px" HorizontalAlign="Center" VerticalAlign="Middle" />
                                    <ItemTemplate>
                                        <asp:Label ID="lbl_Deposit_Amount" runat="server" Text='<%# Eval("Deposit Amount") %>' Font-Size="15px" ToolTip="Deposit Amount In Bitcoin"></asp:Label>
                                        &nbsp;
                            <asp:Image ID="img_Deposit_Amount" runat="server" ImageUrl="~/Images/bitcoin-doubler-icon-for-table-btc.png" ToolTip="Deposit Amount In Bitcoin" />
                                    </ItemTemplate>
                                    <ItemStyle Height="50px" HorizontalAlign="Right" VerticalAlign="Middle" />
                                </telerik:GridTemplateColumn>
                                <telerik:GridTemplateColumn FilterControlAltText="Filter TemplateColumn_Payout_Amount column" HeaderText="Payout Amount" UniqueName="TemplateColumn_Payout_Amount">
                                    <HeaderStyle Font-Bold="True" Font-Size="Medium" Width="200px" HorizontalAlign="Center" VerticalAlign="Middle" />
                                    <ItemTemplate>
                                        <asp:Label ID="lbl_Payout_Amount" runat="server" Text='<%# Eval("Payout Amount") %>' Font-Size="15px" ToolTip="Payout Amount In Bitcoin"></asp:Label>
                                        &nbsp;
                            <asp:Image ID="img_Payout_Amount" runat="server" ImageUrl="~/Images/bitcoin-doubler-icon-for-table-btc.png" ToolTip="Payout Amount In Bitcoin" />
                                    </ItemTemplate>
                                    <ItemStyle Height="50px" HorizontalAlign="Right" VerticalAlign="Middle" />
                                </telerik:GridTemplateColumn>
                                <telerik:GridTemplateColumn FilterControlAltText="Filter TemplateColumn_Status column" HeaderText="Status" UniqueName="TemplateColumn_Status">
                                    <HeaderStyle Font-Bold="True" Font-Size="Medium" Width="250px" HorizontalAlign="Center" VerticalAlign="Middle" />
                                    <ItemTemplate>
                                        <asp:Label ID="lbl_Status" runat="server" Text='<%# Eval("Status") %>' Font-Size="15px" ToolTip='<%# Eval("Status").ToString() == "Complete" ? "Double payment completed" : "Time left for double payment" %>'></asp:Label>
                                        &nbsp;
                                    <asp:Image ID="img_Status" runat="server" ImageUrl='<%# Eval("Status").ToString() == "Complete" ? "~/Images/bitcoin-doubler-payout_icon.png" : "~/Images/bitcoin-doubler-clock-flat.png" %>' ToolTip='<%# Eval("Status").ToString() == "Complete" ? "Complete" : "On Timer" %>' />
                                    </ItemTemplate>
                                    <ItemStyle Height="50px" HorizontalAlign="Right" VerticalAlign="Middle" />
                                </telerik:GridTemplateColumn>
                            </Columns>
                        </MasterTableView>
                    </telerik:RadGrid>
                    <asp:Timer ID="Timer1" runat="server" Interval="1000" OnTick="Timer1_Tick"></asp:Timer>
                </ContentTemplate>
            </asp:UpdatePanel>
    

    下面是c#Timer1_Tick:

     protected void Timer1_Tick(object sender, EventArgs e)
        {
            foreach (GridDataItem item in grd_transactions.Items)
            {
                Label lbl_Type_control = item.FindControl("lbl_Type") as Label;
                Label lbl_Status_control = item.FindControl("lbl_Status") as Label;
                Image img_Status_control = item.FindControl("img_Status") as Image;
    
                if (lbl_Status_control.Text != "Complete")
                {
                    string[] time_array = lbl_Status_control.Text.Split(':');
                    int hours = Convert.ToInt32(time_array[0]);
                    int minutes = Convert.ToInt32(time_array[1]);
                    int seconds = Convert.ToInt32(time_array[2]);
                    int time_left_seconds = (hours * 3600) + (minutes * 60) + seconds;
                    if (time_left_seconds > 0)
                    {
                        time_left_seconds = time_left_seconds - 1;
                        TimeSpan timespan = TimeSpan.FromSeconds(time_left_seconds);
                        lbl_Status_control.Text = timespan.ToString(@"hh\:mm\:ss");
                        //lbl_Status_control.Text = timespan.ToString("H:mm:ss");
                    }
                    else
                    {
                        lbl_Type_control.Text = "Payout";
                        lbl_Type_control.ToolTip = "Payout";
    
                        lbl_Status_control.Text = "Complete";
                        lbl_Status_control.ToolTip = "Double payment completed";
    
                        img_Status_control.ImageUrl = "~/Images/bitcoin-doubler-payout_icon.png";
                        img_Status_control.ToolTip = "Complete";
                    }
                }
            }
        }
    


    在timer_tick中,我创建了倒计时时钟 (hh\:mm\:ss) &每隔1秒更改RadGird Status列的标签。

    问题是,当用户在每次勾选中用鼠标选择一行或列中的标签文本时,该选项消失&用户失去选择&感受计时器的滴答声。
    我应该用什么技巧来解决这个问题?
    0 回复  |  直到 5 年前