2017-05-16 6 views
0

データベースから情報を取り出して表示するリピータがあります。また私はそれの横にボタンがあり、ボタンをクリックすると、そのidはデータベース(MS Access)から削除する必要があります。Ms-Accessからのアイテムをリピータで削除する

ASPXマークアップ:

<asp:Repeater ID="Repeater1" runat="server" 
    OnItemDataBound="Repeater1_ItemDataBound" 
    OnItemCommand="Repeater1_ItemCommand"> 
    <ItemTemplate> 
     <asp:Label ID="id" runat="server" Text='<%# Eval("id")%>'></asp:Label> 
     <asp:Label ID="name" runat="server" Text='<%# Eval("name")%>'></asp:Label> 
     <asp:Button ID="btndelete" runat="server" Text="Delete" CommandName="deletethis"/> 
     <br /><br /> 
    </ItemTemplate> 
</asp:Repeater> 
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label> 

背後にあるコード:

(e.CommandName == "deletethis") 

protected void Page_Load(object sender, EventArgs e) 
{ 
    string connString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|mydb.mdb";//location of db 

    OleDbConnection conn = new OleDbConnection(connString); 
    OleDbDataAdapter sda = new OleDbDataAdapter("SELECT * FROM users", conn); 

    DataTable dt = new DataTable(); 
    sda.Fill(dt); 

    Repeater1.DataSource = dt; 
    Repeater1.DataBind(); 
} 

protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e) 
{ 
    if (e.CommandName == "deletethis") 
    { 
     // the program doesn't get here 
     string id = string.Empty; 

     Label lblid = new Label(); 
     lblid = (Label)e.Item.FindControl("id"); 
     id = lblid .Text; 

     Label2.Text = "Button is clicked on id "+ id; 
    } 
    else 
    { 
     // error 
    } 
} 

は、だから私はボタンをクリックしたときにされて何が起こるか、それは今までにこのラインに到達していません

答えて

0

楽しみのためだけに、if (e.CommandName.ToLower().Equals("deletethis"))を試してください。

私はちょうどこのサンプル(https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.itemcommand(v=vs.110).aspx)を読んでいましたが、commandNameがrep_ItemCommandを実行するために必要でさえないことに気付きました。 CommandNameがチェックされていないコードが動作しているかどうか確認してください。それがなければ、私はOnItemDataBound="Repeater1_ItemDataBound"で何が起こっているのか疑問に思います。

関連する問題