DataGrid

Darthi

Grünschnabel
Hi @ all,

hoffentlich kann mir jemand helfen. Ich habe folgendes Problem. Ich will ein DataGrid basteln das man bearbeiten kann. So hier ist der Quellcode:



Code:
--------------------------------------------------------------------------------
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<%@ Page Language="c#" Debug="true" CodeBehind="Update1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication2.Update1" %>
<% @Import Namespace="System.Data" %>
<% @Import Namespace="System.Data.OleDb" %>
<script language="C#" runat="server">

OleDbConnection conn;

void Page_Load(object sender, EventArgs e)
{
conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" +
@"Data Source=c:\inetpub\wwwroot\aspnet\books.mdb");
conn.Open();

if(!IsPostBack)
BindData();
}

void Page_Unload(object sender, EventArgs e)
{
conn.Close();
}

void BindData()
{
string SQL = "SELECT * FROM Authors";
OleDbCommand cmd = new OleDbCommand(SQL, conn);
dg.DataSource = cmd.ExecuteReader();
DataBind();
}

void dg_Edit(object sender, DataGridCommandEventArgs e)
{
dg.EditItemIndex = e.Item.ItemIndex;
BindData();
}

void dg_Cancel(object sender, DataGridCommandEventArgs e)
{
dg.EditItemIndex = -1;
BindData();
}

void dg_Update(object sender, DataGridCommandEventArgs e)
{
TextBox tb_fn = (TextBox) e.Item.Cells[0].Controls[0];
TextBox tb_ln = (TextBox) e.Item.Cells[1].Controls[0];

string SQL = "UPDATE Authors SET Firstname='"
+ tb_fn.Text + "', Lastname='" + tb_ln.Text
+ "' WHERE ID=" + dg.DataKeys[e.Item.ItemIndex] + ";";
OleDbCommand cmd = new OleDbCommand(SQL, conn);
cmd.ExecuteNonQuery();

dg.EditItemIndex = -1;
BindData();
}

</script>
<form runat="server">
<ASP:DataGrid id="dg" runat="server" AutoGenerateColumns="false" DataKeyField="ID" OnEditCommand="dg_Edit"
OnCancelCommand="dg_Cancel" OnUpdateCommand="dg_Update">
<Columns>
<ASP:BoundColumn HeaderText="Vorname" DataField="Firstname" />
<ASP:BoundColumn HeaderText="Nachname" DataField="Lastname" />
<ASP:EditCommandColumn EditText="Bearbeiten" CancelText="Abbrechen" UpdateText="Übernehmen" />
</Columns>
</ASP:DataGrid>
</form>


--------------------------------------------------------------------------------




Nun gibt er mir aber folgende Fehler aus:

C:\Inetpub\wwwroot\WebApplication2\Update1.aspx(63): Das Element 'Columns' wird vom aktiven Schema nicht unterstützt.
C:\Inetpub\wwwroot\WebApplication2\Update1.aspx(1): Dem aktiven Schema zufolge muss das Element 'meta' in einem übergeordneten Element enthalten sein.
C:\Inetpub\wwwroot\WebApplication2\Update1.aspx(60): Dem aktiven Schema zufolge muss das Element 'form' in einem übergeordneten Element enthalten sein.

Was bedeutet das und wie kann ich es ändern, daß alles . Denn wenn ich das Prog ausführen lasse, geht das so weit, aber es wird nichts angezeigt! Es kommt halt eine leere Seite!

Grüße
Basti
 
Hallo!

Zuerst mal versteh ich Deinen Quellcodeaufbau nicht so richtig. Es ist eine Code Behind Datei angegeben, aber die Quellen stehen trotzdem direkt hier in der aspx Datei. Das solltest Du vermeiden..so is dann der Quelltext einfacher zu lesen und klar strukturiert.

Nach meiner Ansicht gibt es da mehrere Probleme:

Deine Methoden Page_Load und Page_Unload können auf keinen Event reagieren, weil sie keiner Seite zugeordnet sind. Deshalb greift das Schema auch nicht, weil es sich ebenfalls auf eine Seite beziehen muss. Aus dem Grund müsstest Du eine Klasse um Deinen Code bauen, die von System.Web.UI.Page abgeleitet ist:

<% @Import Namespace="System.Web"%>
<% @Import Namespace="System.Web.UI"%>

public class aPage : System.Web.UI.Page{ ... }

Prinzipiell ist das immer notwendig! (Im Zusammenhang mit der Klasse solltest Du auch nochmal auf die Zugriffserlaubnis für Methoden und Klassenelemente eingehen (public, protected, private).

Eventuell solltest Du die Geschichte nochmal von Grund aufbauen!

Gruß

Alex
 
Zuletzt bearbeitet:
Zurück