2017-05-09 168 views
0

我想單擊按鈕時從數據庫中刪除文件夾。從數據庫中刪除文件夾

... 
<td><%#Eval("FolderId").ToString() %></td> 
... 

我使用文件ID列出文件。

這是我的btnDelete代碼;

protected void btnDelete_Click(object sender, EventArgs e) 
    { 
     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings[0].ConnectionString); 
     con.Open(); 
     SqlCommand del = new SqlCommand("delete * from Folders where [email protected]"); 
     del.Parameters.AddWithValue("id", ???); 
     del.ExecuteNonQuery(); 
     con.Close(); 
    } 

我該寫什麼@id參數值?

<asp:Repeater ID="rptC" runat="server"> 
    <HeaderTemplate> 
    <center><table cellpadding="0" cellspacing="0" width="400"> 
    <caption><b>Files</b></caption> 
    <thead> 
    <tr> 
    <th>File ID</th> 
    <th>Path</th> 
    <th>?</th> 
    </tr> 
    </thead> 

    </HeaderTemplate> 
    <ItemTemplate> 
    <tbody> 
    <tr> 
    <td><%#Eval("FolderId").ToString() %></td> 
    <td><%#Eval("FilePath").ToString() %></td> 
    <td><asp:Button ID="btnDelete" CssClass="btnH" ForeColor="#ffffff"  BackColor="#ba04c2" Text="Delete" runat="server" OnClick="btnDelete_Click"/></td> 

    </tr> 
    </tbody> 
    </ItemTemplate> 
    <FooterTemplate> 
    </table> </center> 
    </FooterTemplate> 
    </asp:Repeater> 
+0

是自動生成的按鈕取決於有多少'文件夾的打印?如果是這樣,你可以使用Button的[Command Argument](https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.commandargument(v = vs.110).aspx)。 –

+0

你想要什麼:從數據庫中刪除文件夾的名稱,或刪除後刪除真正的文件夾結構?您可以使用一個變量,例如'del.Parameters.AddWithValue(「@ id」,folderName);'包含帶有命令參數的服務器控件的文件夾名稱,然後執行查詢。 –

+1

你的數據庫中的文件夾是什麼意思?你的意思是在文件夾表中的一行?或真正的操作系統文件夾?另外'DELETE'語句不具有'*' –

回答

0

實施了正確的方法是使用中繼器ItemCommand事件。

標記

<asp:Repeater ID="repeater" runat="server" OnItemCommand="repeater_ItemCommand"> 
    <ItemTemplate> 
     <%# Eval("Text") %> 
     <asp:LinkButton runat="server" ID="DeleteButton" Text="Text" CommandName="Delete" CommandArgument='<%# Eval("Id") %>'></asp:LinkButton> 

    </ItemTemplate> 
</asp:Repeater> 

代碼旁邊

protected void Page_Load(object sender, EventArgs e) 
{ 
    repeater.DataSource = new[] { 
     new {Id= 1, Text = "Text 1" }, 
     new {Id= 2, Text = "Text 2" }, 
    }; 
    repeater.DataBind(); 
} 

protected void repeater_ItemCommand(object source, RepeaterCommandEventArgs e) 
{ 
    if (e.CommandName == "Delete") 
    { 
     Response.Write($"Do something with {e.CommandArgument}"); 
    } 

} 

源代碼在這裏