1

ユーザーにニュースを表示するasp.net Webサイトに取り組んでいます。ニュースは、ユーザー コントロールのリピーターを使用して Web サイトに表示されます。現在、リピーターの ItemTemplate に挿入したボタンを使用してこれらのニュースを削除しようとしています (したがって、ボタンは動的に作成されます)。

    <asp:Button ID="DelBtn" runat="server" OnClientClick="if(!confirm('Really want to delete?')){return false;}" OnClick="cmdDeleteNews_Click" CommandArgument='<%# Eval("NewsID") %>'  />

データベースからの削除は問題ではありません。しかし、後でユーザーコントロールを更新して、削除されたニュースがウェブサイトに表示されないようにするにはどうすればよいですか? JavaScript を使用して要素を削除するだけでも可能ですが、ウェブサイト上のニュースを更新、挿入、および削除するユーザーが多数存在するため、デッドロックが発生する可能性が非常に高くなります。window.location.reload() を使用してページをリロードすることも可能ですが、実際には意味がありません。そのため、PostBack で News-Repeater の Databind を更新するソリューションを探しています。しかし、DataBind()-Method は Postback では使用できないため、この問題に対する同様の解決策または回避策があることを願っています。News-Repeater への DataBind() は、ユーザー コントロールの分離コードで行われます。

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    ' Databind on PostBack is not permitted (InvalidPostbackException)
       If Not IsPostBack Then
          NewsRepeater.DataSource = Items
          NewsRepeater.DataBind()
          ContentRepeater.DataSource = Items
          ContentRepeater.DataBind()
       End If
    End Sub
4

1 に答える 1

2

でデータソースを再ロードしますcmdDeleteNews_Click。次にDataBind、データバインドされたコントロール。

Protected Sub cmdDeleteNews_Click(sender As Object, EventArgs As e)
  ' Delete logic here .... '

  ' Then reload and DataBind all:
  Dim items = GetItems()
  NewsRepeater.DataSource = items 
  NewsRepeater.DataBind()
  ContentRepeater.DataSource = Items
  ContentRepeater.DataBind()
End Sub
于 2013-08-23T07:52:56.873 に答える