0

特定の製品に関連付けられていない関連付けを示す ModalPopupExtenders があります。製品に関連付けられている関連付けは、横に画像の削除ボタンがあるタブ コンテナに表示されます。以前にテストしていたとき、ブラウザーの更新ボタンをクリックしない限り、タブコンテナーから削除した関連付けがモーダルに表示されないことに気付きました。削除ボタンをクリックすると、モーダルが自動的に更新され、余分な手順が不要になるようにするために使用できるコードはありますか?

<!-- Targets -->
<asp:TabPanel ID="tab8" runat="server" HeaderText="Targets">
<HeaderTemplate>Targets</HeaderTemplate>
    <ContentTemplate>
        <ul class="info">
        <asp:ListView ID="lvTargets" runat="server" DataSourceID="dsTargets" DataKeyNames="TargetID">   
        <ItemTemplate>
            <li><%# Eval("TargetName")%>
            <asp:ImageButton ID="DeleteTargetButton" runat="server" Style="float:right;" AlternateText="" ImageUrl="../../images/delete.png" CommandName="Delete" OnClientClick="return confirm('Are you sure you want to delete this target audience?')" />
            </li>
        </ItemTemplate>
        </asp:ListView>
        </ul>
    </ContentTemplate>
</asp:TabPanel>
</asp:TabContainer>

 <!-- Add a Target -->
      <li>
        <asp:LinkButton ID="TargetButton" runat="server">Target</asp:LinkButton>
        <asp:Panel ID="TargetPanel" runat="server" CssClass="modalPopup" Style="display:none">
            <asp:CheckBoxList ID="cbxAddTarget" runat="server" DataSourceID="dsNewTargets" DataTextField="TargetName" DataValueField="TargetID"></asp:CheckBoxList>
            <asp:Button ID="SubmitTargets" runat="server" Text="Submit" />
            <asp:Button ID="CancelSubmitTargets" runat="server" Text="Cancel" />
        </asp:Panel>
        <asp:ModalPopupExtender ID="TargetModal" runat="server" BackgroundCssClass="modalBackground" CancelControlID="CancelSubmitTargets" DropShadow="True" DynamicServicePath="" Enabled="True" PopupControlID="TargetPanel" TargetControlID="TargetButton"></asp:ModalPopupExtender>
    </li>

    Protected Sub SubmitTargets_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles SubmitTargets.Click
    DocumentModal.Hide()
    dsNewTargets.DataBind()
    For Each Target As ListItem In cbxAddTarget.Items
        If Target.Selected Then
            Dim sqlAddTarget As String = Nothing
            'SQL INSERT: TargetLink Table
            sqlAddTarget = "INSERT INTO TargetLink (ProductID, TargetID) VALUES (" & ProductID.Value & ", " & Target.Value & ")"
            sqlAddTarget.Replace("'", "''")
            Dim SqlConnection As New SqlConnection("Server=off-db1;uid=productsDB_admin;pwd=******;database=Products")
            SqlConnection.Open()
            Dim sqlCommand As New SqlCommand(sqlAddTarget, SqlConnection)
            sqlCommand.ExecuteNonQuery()
            SqlConnection.Close()
        End If
    Next
    Response.Redirect(Request.RawUrl)
End Sub   

    Protected Sub dsTargets_Deleted(ByVal sender As Object, ByVal e As SqlDataSourceStatusEventArgs)
    If e.Exception Is Nothing Then
        'rebind the new targets list to show updates
        dsNewTargets.DataBind()
    End If
End Sub
4

1 に答える 1

1

私はあなたが何をしようとしているのか理解していると思います。タブ コンテナーから項目を削除するときは、次のように、追加ターゲット リストをフィードしているデータソース コントロールを再バインドしてみてください。

//code to delete targets from tab container

dsNewTargets.DataBind();

EDIT : データソース コントロールによる削除で再バインドするためのメソッドを追加しました。

dsTargets (削除元) の OnDeleted イベント ハンドラーを追加します。

Protected Sub dsTargets_Deleted(sender As Object, e As SqlDataSourceStatusEventArgs)
    If e.Exception Is Nothing Then
        'rebind the new targets list to show updates
        dsNewTargets.DataBind()
    End If
End Sub

EDIT : データ ソース コントロールが結果をキャッシュしている可能性があります。キャッシュを無効にするコードを追加しました。

次の行を Page_Load イベントに追加してみてください。

Response.Cache.SetCacheability(HttpCacheability.NoCache)
于 2011-08-29T21:03:41.077 に答える