Davidnyh
May 23rd, 2005, 01:23 PM
I followed the article 'the bid asp.net datagrid article, part3' of this site but when I push the update buton when first clicked on edit I get this error:
Dutch: Het opgegeven argument ligt buiten het bereik van geldige waarden. Parameternaam: index
Enlish: Specified argument was out of the range of valid values. Parameter name: index
Het opgegeven argument ligt buiten het bereik van geldige waarden. Parameternaam: index
Beschrijving: Er is een onverwerkte uitzondering opgetreden tijdens het uitvoeren van de huidige webaanvraag. Raadpleeg de stacktracering voor meer informatie over deze fout en de oorsprong ervan in de code.
Details van uitzondering: System.ArgumentOutOfRangeException: Het opgegeven argument ligt buiten het bereik van geldige waarden. Parameternaam: index
Fout in bron:
Regel 200: OleDbDataAdapter1.Fill(DataSet11)
Regel 201: OleDbDataAdapter2.Fill(DataSet11)
Regel 202: Dim objEditedRow As DataRow = DataSet11.Tables(0).Rows.Find(CType(e.Item.Cells(5).Controls(0), TextBox).Text)
Regel 203:
Regel 204: Dim intCount As Integer
Bronbestand: c:\inetpub\wwwroot\bibliotheek\administrators\Boeken.aspx.vb Regel: 202
Stacktracering:
[ArgumentOutOfRangeException: Het opgegeven argument ligt buiten het bereik van geldige waarden.
Parameternaam: index]
System.Web.UI.ControlCollection.get_Item(Int32 index) +58
bibliotheek.Boeken1.DataGrid1_UpdateCommand(Object source, DataGridCommandEventArgs e) in c:\inetpub\wwwroot\bibliotheek\administrators\Boeken.aspx.vb:202
System.Web.UI.WebControls.DataGrid.OnUpdateCommand(DataGridCommandEventArgs e) +109
System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object source, EventArgs e) +507
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +26
System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object source, EventArgs e) +106
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +26
System.Web.UI.WebControls.Button.OnCommand(CommandEventArgs e) +120
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +115
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1277
This is my html code:
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="Boeken.aspx.vb" Inherits="bibliotheek.Boeken1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Boeken</title>
<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<link href="../Styles.css" type="text/css" rel="stylesheet">
</head>
<body ms_positioning="GridLayout">
<form id="Form1" method="post" runat="server">
<div align="center">
<table id="BoekenTable" style="WIDTH: 700px" cellspacing="0" cellpadding="0" border="0">
<tr>
<td style="HEIGHT: 40px" colspan="2"></td>
</tr>
<tr>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 40px" align="center" colspan="2">BIBLIOTHEEK</td>
</tr>
<tr>
<td style="FONT-SIZE: 16px" align="center" colspan="2">BOEKEN LIJST</td>
</tr>
<tr>
<td style="HEIGHT: 5px" colspan="2"></td>
</tr>
<tr>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 12px; HEIGHT: 25px; BACKGROUND-COLOR: gainsboro" align="center" colspan="2">---------</td>
</tr>
<tr>
<td style="HEIGHT: 5px" colspan="2"></td>
</tr>
<tr>
<td style="WIDTH: 700px" colspan="2" align="center"><asp:datagrid id="DataGrid1" runat="server" datasource="<%# DataSet11 %>" datakeyfield="boek_id" datamember="tabel_boeken" autogeneratecolumns="False" pagesize="8" allowpaging="True" font-names="Comic Sans MS" font-size="15px" bordercolor="Black" borderwidth="1px" cellpadding="3">
<edititemstyle backcolor="WhiteSmoke"></edititemstyle>
<itemstyle forecolor="Black"></itemstyle>
<headerstyle font-bold="True" backcolor="Gainsboro"></headerstyle>
<columns>
<asp:editcommandcolumn buttontype="PushButton" updatetext="Update" canceltext="Cancel" edittext="Edit"></asp:editcommandcolumn>
<asp:buttoncolumn text="Delete" buttontype="PushButton" commandname="Delete"></asp:buttoncolumn>
<asp:boundcolumn datafield="boek_titel" sortexpression="boek_titel" headertext="Titel">
<headerstyle horizontalalign="Left" verticalalign="Middle"></headerstyle>
<itemstyle horizontalalign="Left" verticalalign="Middle"></itemstyle>
</asp:boundcolumn>
<asp:templatecolumn headertext="Auteurs">
<headerstyle horizontalalign="Center" verticalalign="Middle"></headerstyle>
<itemstyle horizontalalign="Center" verticalalign="Middle"></itemstyle>
<itemtemplate>
<asp:dropdownlist id="ddl1" runat="server" datasource="<%# DataSet11 %>" datamember="tabel_auteurs" enabled="False" datatextfield="aut_naam" datavaluefield="aut_id">
</asp:dropdownlist>
</itemtemplate>
<edititemtemplate>
<asp:dropdownlist id="ddl2" runat="server" datasource="<%# DataSet11 %>" datamember="tabel_auteurs" datatextfield="aut_naam" datavaluefield="aut_id">
</asp:dropdownlist>
</edititemtemplate>
</asp:templatecolumn>
<asp:boundcolumn datafield="boek_isbn" sortexpression="boek_isbn" headertext="ISBN Nummer">
<headerstyle horizontalalign="Center" verticalalign="Middle"></headerstyle>
<itemstyle horizontalalign="Center" verticalalign="Middle"></itemstyle>
</asp:boundcolumn>
<asp:boundcolumn visible="False" datafield="boek_id" sortexpression="boek_id" readonly="True" headertext="Boek ID"></asp:boundcolumn>
<asp:boundcolumn visible="False" datafield="aut_id" sortexpression="aut_id" headertext="Auteur ID"></asp:boundcolumn>
</columns>
<pagerstyle verticalalign="Middle" horizontalalign="Center" mode="NumericPages"></pagerstyle>
</asp:datagrid></td>
</tr>
<tr>
<td style="HEIGHT: 40px" align="center" colspan="2"><asp:button id="btnAddBoeken" onclick="AddBoeken_Click" runat="server" text="Boeken toevoegen"></asp:button></td>
</tr>
<tr>
<td style="HEIGHT: 20px" align="center" colspan="2"><asp:label id="ErrorLabel" runat="server" forecolor="Red" font-size="X-Small"></asp:label></td>
</tr>
<tr>
<td style="FONT-SIZE: 10px; HEIGHT: 25px" align="center" colspan="2">© Copyright
2005 - David Weytens/Jan Castro</td>
</tr>
</table>
</div>
</form>
</body>
</html>
This is my code behind
Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand
CType(e.Item.Cells(6).Controls(0), TextBox).Text = CType(e.Item.FindControl("ddl2"), DropDownList).SelectedItem.Value()
OleDbDataAdapter1.Fill(DataSet11)
OleDbDataAdapter2.Fill(DataSet11)
Dim objEditedRow As DataRow = DataSet11.Tables(0).Rows.Find(CType(e.Item.Cells(5).Controls(0), TextBox).Text)
Dim intCount As Integer
For intCount = 0 To e.Item.Cells.Count - 1
If e.Item.Cells(intCount).Controls.Count > 0 Then
If TypeOf (e.Item.Cells(intCount).Controls(0)) Is TextBox Then
Dim strValue As String = CType(e.Item.Cells(intCount).Controls(0), TextBox).Text
If strValue = "" Then
objEditedRow.Item(DataGrid1.Columns(intCount).SortExpression) = System.DBNull.Value
Else
objEditedRow.Item(DataGrid1.Columns(intCount).SortExpression) = strValue
End If
End If
End If
Next
OleDbDataAdapter1.Update(DataSet11)
With DataGrid1
.SelectedIndex = -1
.EditItemIndex = -1
.DataSource = DataSet11
.DataBind()
End With
End Sub
Dutch: Het opgegeven argument ligt buiten het bereik van geldige waarden. Parameternaam: index
Enlish: Specified argument was out of the range of valid values. Parameter name: index
Het opgegeven argument ligt buiten het bereik van geldige waarden. Parameternaam: index
Beschrijving: Er is een onverwerkte uitzondering opgetreden tijdens het uitvoeren van de huidige webaanvraag. Raadpleeg de stacktracering voor meer informatie over deze fout en de oorsprong ervan in de code.
Details van uitzondering: System.ArgumentOutOfRangeException: Het opgegeven argument ligt buiten het bereik van geldige waarden. Parameternaam: index
Fout in bron:
Regel 200: OleDbDataAdapter1.Fill(DataSet11)
Regel 201: OleDbDataAdapter2.Fill(DataSet11)
Regel 202: Dim objEditedRow As DataRow = DataSet11.Tables(0).Rows.Find(CType(e.Item.Cells(5).Controls(0), TextBox).Text)
Regel 203:
Regel 204: Dim intCount As Integer
Bronbestand: c:\inetpub\wwwroot\bibliotheek\administrators\Boeken.aspx.vb Regel: 202
Stacktracering:
[ArgumentOutOfRangeException: Het opgegeven argument ligt buiten het bereik van geldige waarden.
Parameternaam: index]
System.Web.UI.ControlCollection.get_Item(Int32 index) +58
bibliotheek.Boeken1.DataGrid1_UpdateCommand(Object source, DataGridCommandEventArgs e) in c:\inetpub\wwwroot\bibliotheek\administrators\Boeken.aspx.vb:202
System.Web.UI.WebControls.DataGrid.OnUpdateCommand(DataGridCommandEventArgs e) +109
System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object source, EventArgs e) +507
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +26
System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object source, EventArgs e) +106
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +26
System.Web.UI.WebControls.Button.OnCommand(CommandEventArgs e) +120
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +115
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1277
This is my html code:
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="Boeken.aspx.vb" Inherits="bibliotheek.Boeken1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Boeken</title>
<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<link href="../Styles.css" type="text/css" rel="stylesheet">
</head>
<body ms_positioning="GridLayout">
<form id="Form1" method="post" runat="server">
<div align="center">
<table id="BoekenTable" style="WIDTH: 700px" cellspacing="0" cellpadding="0" border="0">
<tr>
<td style="HEIGHT: 40px" colspan="2"></td>
</tr>
<tr>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 40px" align="center" colspan="2">BIBLIOTHEEK</td>
</tr>
<tr>
<td style="FONT-SIZE: 16px" align="center" colspan="2">BOEKEN LIJST</td>
</tr>
<tr>
<td style="HEIGHT: 5px" colspan="2"></td>
</tr>
<tr>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 12px; HEIGHT: 25px; BACKGROUND-COLOR: gainsboro" align="center" colspan="2">---------</td>
</tr>
<tr>
<td style="HEIGHT: 5px" colspan="2"></td>
</tr>
<tr>
<td style="WIDTH: 700px" colspan="2" align="center"><asp:datagrid id="DataGrid1" runat="server" datasource="<%# DataSet11 %>" datakeyfield="boek_id" datamember="tabel_boeken" autogeneratecolumns="False" pagesize="8" allowpaging="True" font-names="Comic Sans MS" font-size="15px" bordercolor="Black" borderwidth="1px" cellpadding="3">
<edititemstyle backcolor="WhiteSmoke"></edititemstyle>
<itemstyle forecolor="Black"></itemstyle>
<headerstyle font-bold="True" backcolor="Gainsboro"></headerstyle>
<columns>
<asp:editcommandcolumn buttontype="PushButton" updatetext="Update" canceltext="Cancel" edittext="Edit"></asp:editcommandcolumn>
<asp:buttoncolumn text="Delete" buttontype="PushButton" commandname="Delete"></asp:buttoncolumn>
<asp:boundcolumn datafield="boek_titel" sortexpression="boek_titel" headertext="Titel">
<headerstyle horizontalalign="Left" verticalalign="Middle"></headerstyle>
<itemstyle horizontalalign="Left" verticalalign="Middle"></itemstyle>
</asp:boundcolumn>
<asp:templatecolumn headertext="Auteurs">
<headerstyle horizontalalign="Center" verticalalign="Middle"></headerstyle>
<itemstyle horizontalalign="Center" verticalalign="Middle"></itemstyle>
<itemtemplate>
<asp:dropdownlist id="ddl1" runat="server" datasource="<%# DataSet11 %>" datamember="tabel_auteurs" enabled="False" datatextfield="aut_naam" datavaluefield="aut_id">
</asp:dropdownlist>
</itemtemplate>
<edititemtemplate>
<asp:dropdownlist id="ddl2" runat="server" datasource="<%# DataSet11 %>" datamember="tabel_auteurs" datatextfield="aut_naam" datavaluefield="aut_id">
</asp:dropdownlist>
</edititemtemplate>
</asp:templatecolumn>
<asp:boundcolumn datafield="boek_isbn" sortexpression="boek_isbn" headertext="ISBN Nummer">
<headerstyle horizontalalign="Center" verticalalign="Middle"></headerstyle>
<itemstyle horizontalalign="Center" verticalalign="Middle"></itemstyle>
</asp:boundcolumn>
<asp:boundcolumn visible="False" datafield="boek_id" sortexpression="boek_id" readonly="True" headertext="Boek ID"></asp:boundcolumn>
<asp:boundcolumn visible="False" datafield="aut_id" sortexpression="aut_id" headertext="Auteur ID"></asp:boundcolumn>
</columns>
<pagerstyle verticalalign="Middle" horizontalalign="Center" mode="NumericPages"></pagerstyle>
</asp:datagrid></td>
</tr>
<tr>
<td style="HEIGHT: 40px" align="center" colspan="2"><asp:button id="btnAddBoeken" onclick="AddBoeken_Click" runat="server" text="Boeken toevoegen"></asp:button></td>
</tr>
<tr>
<td style="HEIGHT: 20px" align="center" colspan="2"><asp:label id="ErrorLabel" runat="server" forecolor="Red" font-size="X-Small"></asp:label></td>
</tr>
<tr>
<td style="FONT-SIZE: 10px; HEIGHT: 25px" align="center" colspan="2">© Copyright
2005 - David Weytens/Jan Castro</td>
</tr>
</table>
</div>
</form>
</body>
</html>
This is my code behind
Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand
CType(e.Item.Cells(6).Controls(0), TextBox).Text = CType(e.Item.FindControl("ddl2"), DropDownList).SelectedItem.Value()
OleDbDataAdapter1.Fill(DataSet11)
OleDbDataAdapter2.Fill(DataSet11)
Dim objEditedRow As DataRow = DataSet11.Tables(0).Rows.Find(CType(e.Item.Cells(5).Controls(0), TextBox).Text)
Dim intCount As Integer
For intCount = 0 To e.Item.Cells.Count - 1
If e.Item.Cells(intCount).Controls.Count > 0 Then
If TypeOf (e.Item.Cells(intCount).Controls(0)) Is TextBox Then
Dim strValue As String = CType(e.Item.Cells(intCount).Controls(0), TextBox).Text
If strValue = "" Then
objEditedRow.Item(DataGrid1.Columns(intCount).SortExpression) = System.DBNull.Value
Else
objEditedRow.Item(DataGrid1.Columns(intCount).SortExpression) = strValue
End If
End If
End If
Next
OleDbDataAdapter1.Update(DataSet11)
With DataGrid1
.SelectedIndex = -1
.EditItemIndex = -1
.DataSource = DataSet11
.DataBind()
End With
End Sub