在Repeater中删除

时间:2009-11-09 10:43:32

标签: asp.net

我有一个用于视频上传和播放的网络应用程序。管理员可以上传,用户可以查看上传的文件。我自动填充从数据库到转发器的链接。我的目标是管理员可以删除上传的文件。文件也从数据库中删除。我正在使用SQl experess和VS2005。我该怎么做?

2 个答案:

答案 0 :(得分:7)

放置一个按钮或任何其他您喜欢的控件,并为此按钮设置命令名称属性等于“删除”,例如,将任何id放入命令参数属性以知道要删除哪一行,并在转发器中使用ItemCommand事件检查此命令名称然后执行删除功能。

示例:

<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand">
    <ItemTemplate>
        <asp:LinkButton ID="LinkButton1" CommandName="Delete" OnClientClick="javascript:if(!confirm('Delete this information? this will delete permanently'))return false;" CommandArgument='<%#Eval("EntityID") %>' runat="server">Delete</asp:LinkButton>
    </ItemTemplate>
</asp:Repeater>

protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    if (e.CommandName == "Delete" && e.CommandArgument.ToString() != "")
    {
        // DoDelete then rebind
    }
}

删除代码将是这样的:

Dim connectionString As String = ConfigurationManager.ConnectionStrings("UploadConnectionString").ConnectionString 

Dim adapter As New SqlDataAdapter("DELETE FROM FileM where id=" & e.CommandArgument.ToString(), connectionString) 

答案 1 :(得分:0)

如果您想使用自定义确认(如jquery对话框,bootboxjs等),那么您必须生成按钮的“回发字符串”或以某种方式获取它。 asp.net在呈现页面后给出诸如回发名称;的 __ doPostBack( 'ctl00 $ $ ContentPlaceHolder1 btnDeleteSelected', '')即可。在意识到这一点之后我写了一个js函数,它生成了button的postback str;

function PostBackBtnMake(id) { // id : ContentPlaceHolder1_btnDeleteSelected
  var result;
  var temp = id.split('_');
  result = 'ctl00$' + temp[0] + '$' + temp[1];
  return result;
}

然后我可以在自定义确认框中使用(在本例中我使用了bootboxjs);

function PostBackBtn(e) {
  var _result = false;
  bootbox.confirm("Are you sure?", function (result) {
      if (result) {
          __doPostBack(PostBackBtnMake(e.id), '')
      }
  });

  return _result;
}

它对我有用,我希望它对你也有帮助。