4

リモート サービスから文字情報を取得し、その情報を UpdatePanel 内のテーブルに表示するページがあります。テーブル行、テーブルセル、およびテキストをテーブルに追加するだけであれば、テーブルは完全に更新されます。ただし、img タグまたは Image クラスを使用して画像を追加しようとすると、テーブルが一度更新された後、それ以上の更新が拒否されます。

いくつかの Google 検索を実行し、各検索で最初の数ページ分の結果を読み、stackoverflow を確認しましたが、特定の問題に一致する結果はありません。画像はなくても構いませんが、各ゲーム キャラクターに現在影響しているステータス効果を視覚的に表現するために画像を使用したかったので、画像を追加したいと考えています。コードは以下です。

<asp:ScriptManager ID="scMain" runat="server" />
<asp:Timer ID="tmrRefresh" runat="server" Interval="5000" Enabled="true" />
<asp:UpdatePanel ID="udPanel" runat="server">
<Triggers>
    <asp:AsyncPostBackTrigger ControlID="tmrRefresh" EventName="Tick" />
</Triggers>
<ContentTemplate>
    <asp:Table id="tblCharacters" runat="server">
        <asp:TableHeaderRow>
            <asp:TableHeaderCell>Focus</asp:TableHeaderCell>
            <asp:TableHeaderCell>Character</asp:TableHeaderCell>
            <asp:TableHeaderCell>Location</asp:TableHeaderCell>
            <asp:TableHeaderCell>Ping</asp:TableHeaderCell>
        </asp:TableHeaderRow>
    </asp:Table><br />
    <asp:Label ID="lblNote" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>

コードビハインド:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not Master.IsLoggedIn Then
        Response.Redirect("login.aspx")
    Else
        FillCharacterTable()
    End If
End Sub

Private Sub FillCharacterTable()
    Dim Foci() As Byte = {0, 4, 10, 19, 24}
    Dim Names() As String = {"Unknown", "Gatekeeper", "Dreamseer", "Soulmaster", "Fatesender"}
    Dim HaloColors() As Byte = {0, 4, 15, 7, 18}

    Dim c As New CharacterInfoClient ' Remote service

    Dim Characters() As String = c.GetCharacterInformation

    For Each s As String In Characters
        Dim args() As String = s.Split("|")
        Dim tr As New TableRow
        ' add focus elemen icon
        Dim focus As Byte = Foci(args(2))

        ' option 1 - causes timer to stop updating
        tr.Cells.Add(New TableCell With {.Text = String.Format("<img src=""http://mydomainremoved.net/images/game/image.gif?s=7&v=3&c1={0}&c2={0}&st=50"">", focus))})

        ' Option 2, same thing
        Dim tc As New TableCell
        tc.Controls.Add(New Image With {.ImageUrl = String.Format("http://mydomainremoved.net/images/game/image.gif?s=7&v=3&c1={0}&c2={0}&st=50", focus)})

        tr.Cells.Add(tc)

        tr.Cells.Add(New TableCell With {.Text = "<a href=""character.aspx?id=" & args(1) & """>" & args(0) & "</a>"})
        tr.Cells.Add(New TableCell With {.Text = args(4)})
        tr.Cells.Add(New TableCell With {.Text = args(7)})

        tblCharacters.Rows.Add(tr)
    Next

    lblNote.Text = Characters.Length & " characters -- " & Now.ToString

End Sub
4

1 に答える 1

0

画像タグではなく、CSS クラスを試してみる価値はあるでしょうか?

td.gatekeeper
{
     background-image: url('http://mydomainremoved.net/images/game/image.gif?s=7&v=3&c1=10&c2=10&st=50');
}
td.dreamseer
{
   // etc.
}

配列に可能な値の数は限られているためFoci(文字名に関連付けられていると想定しています)、それぞれが特定の画像 URL を指す複数のクラスを設定し、必要な値に基づいて割り当てることができます。メソッドへの引数。

于 2013-03-04T18:31:59.987 に答える