|
|||||
|
Velkommen IntroASP.NET og XML IntroduktionXML CSS XSL(T) DTD og Schemas DOM og SAX Værktøjer XML i datagrid XML - skrivning af XML XML og transformationer XML - udtræk af elementer Dataset og datagrid objektet Indlæsning af dataPaging Sortering Ret post Slet post Opret ny post Hyperlinks i datagrid Billeder i datagrid Vælg post i datagrid Cache Et eksempel med det hele Datagrid, database og datasetDataset - extra CloneMerge Relationer Class Hvordan gør manAndeby klassen i vb Andeby klassen i c-sharp Webservices IndledningEtablering af en web-service Kald af web-services Sikkerhed ModellerBrug af forms modellen Opret cookie selv File upload Optimering Hvad kan man gøreMere om caching Fejlsøgning TracingFejlhaandtering De andre fejl Et lille CMS Basis infoVis side Ret side Styr sider Pæn URL Et demo system Kalender kontrollen Et lille kodeeksempel |
ASP.NET II / Dataset og datagrid objektet / Ret post |
||||
ASP.NET fjernundervisningskursus- Vil du gerne på kursus NU? - Vil du gerne lære i dit eget tempo? - Har du ikke tid til at tage på kursus ude i byen? Så køb et kursus i ASP.NET som fjernundervisning på www.it-fjernundervisning.dk |
Det minder meget om de foregående:
Dette er så koden:
Private Sub dgridAndeby_CancelCommand(ByVal ...
dgridAndeby.EditItemIndex = -1
DoDatabind()
End Sub
Private Sub dgridAndeby_EditCommand(ByVal ...
dgridAndeby.EditItemIndex = e.Item.ItemIndex
DoDatabind()
End Sub
Private Sub dgridAndeby_UpdateCommand(ByVal ...
Dim objRows() As DataRow
Dim dsetAndeby As New DataSet
Dim strSelect As String
strSelect = "ID='" + CStr(dgridAndeby.DataKeys(e.Item.ItemIndex)) + "'"
dsetAndeby = GetDataset()
objRows = dsetAndeby.Tables(0).Select(strSelect)
objRows(0).Item("Fornavn") = CType(e.Item.Cells(1).Controls(0), TextBox).Text
dsetAndeby.WriteXml(Server.MapPath("Andeby.xml"))
dgridAndeby.EditItemIndex = -1
DoDatabind()
End Sub
Som man kan se, er der dukket en ny funktion op, der hedder GetDataset() og det afføder også en lille ændring i DoDatabind():
Private Function GetDataset() As DataSet
Dim dsetAndeby As New DataSet
dsetAndeby.ReadXml(Server.MapPath("Andeby.xml"))
Return dsetAndeby
End Function
Private Sub DoDatabind()
Dim objDataView As DataView
objDataView = GetDataset().Tables(0).DefaultView
dgridAndeby.DataSource = objDataView
dgridAndeby.DataBind()
End Sub
private void CancelEdit(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
dgridAndeby.EditItemIndex = -1;
DoDatabind();
}
private void DoEdit(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
dgridAndeby.EditItemIndex = e.Item.ItemIndex;
DoDatabind();
}
private void UpdateEdit(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataRow []objRows;
DataSet dsetAndeby = DataSet();
dsetAndeby = GetDataset();
String strSelect = "ID='" + (string)dgridAndeby.DataKeys[e.Item.ItemIndex] + "'";
objRows = dsetAndeby.Tables[0].Select(strSelect);
objRows[0]["Fornavn"] = ((TextBox)e.Item.Cells[1].Controls[0]).Text;
dsetAndeby.WriteXml(Server.MapPath("Andeby.xml"));
dgridAndeby.EditItemIndex = -1;
DoDatabind();
}
Som man kan se, er der dukket en ny funktion op, der hedder GetDataset() og det afføder også en lille ændring i DoDatabind():
private DataSet GetDataset()
{
DataSet dsetAndeby = new DataSet();
dsetAndeby.ReadXml(Server.MapPath("Andeby.xml"));
return dsetAndeby;
}
private void DoDatabind()
{
DataView objDataView;
objDataView = GetDataset().Tables[0].DefaultView;
dgridAndeby.DataSource = objDataView;
dgridAndeby.DataBind();
}
Bemærk, at Item objektet har en FindControl metode, man kan bruge i stedet for at skulle indeksere sig igennem cellerne - den virker bare bedst på template kolonner, som vi skal se på om lidt.