Slette en række i en Access database
Hej,Ved min datagrid, der er tilkoblet en Access database har jeg sat en ButtonLink (Slet) som skulle slette en bestemt række i databasen, men min kode virker desværre ikke. Jeg bruger ASP.NET 1.1 og VS 2003. Her er aspx og aspx.cs filerne:
----------------
aspx:
----
<%@ Page language="c#" Codebehind="Mult_Oversigt.aspx.cs" AutoEventWireup="false" Inherits="EIS_test.Mult_Oversigt" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>Master1</title>
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<LINK href="style.css" type="text/css" rel="stylesheet">
</HEAD>
<body MS_POSITIONING="Flowlayout" bgColor="#6a828b">
<form id="Form1" method="post" runat="server">
<asp:datagrid id="grid" runat="server" CellPadding="3" PageSize="5" BorderColor="#CCCCFF" HorizontalAlign="Center"
AllowPaging="True" AutoGenerateColumns="False" Width="720px" Font-Names="Verdana" Font-Size="X-Small"
BackColor="White" DataKeyField="ID">
<AlternatingItemStyle BackColor="#E0E0E0"></AlternatingItemStyle>
<HeaderStyle BackColor="#AACCCC"></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="ID" HeaderText="ID">
<HeaderStyle HorizontalAlign="Center" Width="70px"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="Navn" HeaderText="Navn">
<HeaderStyle HorizontalAlign="Center" Width="250px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="Beskriv" HeaderText="Beskrivelse">
<HeaderStyle HorizontalAlign="Center" Width="250px"></HeaderStyle>
</asp:BoundColumn>
<asp:HyperLinkColumn Text="Detaljer" DataNavigateUrlField="ID" DataNavigateUrlFormatString="Multi_Details.aspx?ID={0}">
<HeaderStyle Width="100px"></HeaderStyle>
<ItemStyle ForeColor="#666666"></ItemStyle>
</asp:HyperLinkColumn>
<asp:ButtonColumn Text="Slet" CommandName="Delete">
<HeaderStyle Width="50px"></HeaderStyle>
</asp:ButtonColumn>
</Columns>
<PagerStyle BackColor="#AACCCC" Mode="NumericPages"></PagerStyle>
</asp:datagrid></form>
<TABLE id="Table1" cellSpacing="0" cellPadding="0" width="340" align="center" border="0">
</TABLE>
</body>
</HTML>
--------
aspx.cs:
----
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Data.OleDb;
namespace EIS_test
{
public class Mult_Oversigt : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid grid;
DataSet oDS = new DataSet();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGrid();
}
}
private void BindGrid()
{
grid.DataSource = GetData();
grid.DataBind();
}
private DataTable GetData()
{
string strConn, strCmd;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + MapPath("Data/EIS.mdb");
strCmd = "SELECT ID, Navn, Beskriv, File1, File2, File3 FROM eis ORDER BY ID DESC";
OleDbDataAdapter oCMD = new OleDbDataAdapter(strCmd, strConn);
DataSet oDS = new DataSet();
oCMD.Fill(oDS, "eis");
DataTable dt = oDS.Tables["eis"];
return dt;
}
private void DeleteRow(object source, DataGridCommandEventArgs e)
{
DataRow[] objRows;
DataSet ds = new DataSet();
string strSelect;
strSelect = "ID='" + Convert.ToString(grid.DataKeys[e.Item.ItemIndex]) + "'";
ds = GetDataset();
objRows = ds.Tables["eis"].Select(strSelect);
objRows[0].Delete();
ds.Tables["eis"].AcceptChanges();
grid.EditItemIndex = -1;
BindGrid();
}
private DataSet GetDataset()
{
DataSet ds = new DataSet();
OleDbDataAdapter objAdapter = new OleDbDataAdapter();
objAdapter.Fill(ds, "eis");
return ds;
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
private void InitializeComponent()
{
this.grid.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.grid_PageIndexChanged);
this.grid.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DeleteRow);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void grid_PageIndexChanged(object sender, DataGridPageChangedEventArgs e)
{
grid.CurrentPageIndex = e.NewPageIndex;
BindGrid();
}
}
}
