Forms Data Controls :: Error "Index Was Out Of Range" While Page Is Loading?
Jul 17, 2010
im trying to add checkboxes dynamically but i get this error "Index was out of range" While Page is Loading - DataTable tablo; SqlDataAdapter adaptor; SqlConnection baglanti = new SqlConnection("server=.sqlexpress;DATABASE=Northwind;Integrated Security=sspi");
I recently had to remove a field from my datakey on all three gridview tables. On the top level table the field (ignum) remains as a non key field. On the two lower level tables it was removed completely. Now, the top level gridview opens correctly, but when I click on select this should bring up all the records in the second gridview associated with the selected row in the first gridview, but I get the following error:
I've looked at everything I can thing of and everything looks ok. The tables look good, I've removed all references to the removed field and I've restructured all the code to account for the changes. I'm missing something, but I don't know what. I've gone through debug step by step and the error occurs as I leave the GridView1_SelectedIndexChanged code. It goes down to the End Sub line with no errors, but when I step again it errors out. Here is that section of code.
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
Line 61: Dim favorname As String = GridView1.DataKeys(row.RowIndex).ToStringLine 62: Line 63: ' Pass the value of the selected Employye ID to the Delete //command. My coding as Protected Sub btnMultipleRowDelete_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnMultipleRowDelete.Click ' Looping through all the rows in the GridView For Each row As GridViewRow In GridView1.Rows Dim checkbox As CheckBox = CType(row.FindControl("cbRows"), CheckBox) 'Check if the checkbox is checked. 'value in the HtmlInputCheckBox's Value property is set as the //value of the delete command's parameter. If checkbox.Checked Then ' Retreive the Favorname Dim favorname As String = GridView1.DataKeys(row.RowIndex).ToString ' Pass the value of the selected Employye ID to the Delete //command. SqlDataSource1.DeleteParameters("Favorname").DefaultValue = favorname.ToString() SqlDataSource1.Delete() End If Next row End Sub <asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" Width="563px" AutoGenerateColumns="False"> <RowStyle CssClass="fontsmallthennormal" /> <HeaderStyle CssClass="fontnormalblue8" /> <EditRowStyle CssClass="fontsmallthennormal" /> <Columns> <asp:TemplateField> <ItemTemplate> <asp:CheckBox ID="cbRows" runat="server"/> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="Favorname" HeaderText="Favorname" SortExpression="Favorname" /> <asp:BoundField DataField="FavorDate" HeaderText="FavorDate" SortExpression="FavorDate" /> </Columns> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" ConnectionString="<%$ ConnectionStrings:yyyy %>" runat="server" SelectCommand="SELECT [US], [Favorname], [FavorDate] FROM [TBL_FAVORITES] WHERE ([US] = @US)" DeleteCommand="DELETE from TBL_FAVORITES where [Favorname]= @Favorname" > <SelectParameters > <asp:ControlParameter ControlID="txtusername1" Name="US" PropertyName="Text" Type="String" /> </SelectParameters> <DeleteParameters> <asp:Parameter Name="Favorname" /> </DeleteParameters> </asp:SqlDataSource>
i use objectdatasource control for bind record and also in gridview paging.in my gridview there is a linkbutton(edit) when i click it then it redirect to next page with some key value.but problem is when i try to paging in gridview an error is occure that is Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index
I'm stumbling on a basic LinqDataSource insertion problem. For some reason, I cannot insert records. The run-time returns the following error: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index The mark-up is as follows with the InsertParameters group. Adding or removing the group leads to the same error. (Note that updating works fine):
The events are void (just a convenient way to to troubleshoot). However, the run-time error occurs before the events are fired.
it is a simple question, but i didn't understand. here is the code below:
Private Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated Dim drv As DataRowView If e.Row.RowType = DataControlRowType.DataRow Then For i As Integer = 0 To e.Row().Cells.Count If " ".Equals(e.Row().Cells(i).Text) Then e.Row().Cells(i).Text = "" End If Next End If End Sub
the line "If e.Row.RowType = DataControlRowType.DataRow Then" occured exception below System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection
I am getting error Specified index out of range of valid values. Parameter name index. I tried to put a breakpoint and see where am I getting the error. I have 5 columns (1 hidden). first 3 columns- no issue. But when the control reaches the 4th column it throws the error. I saw that I am getting correct values for the first 3..no ide what is going wrong with the 4th one.
AutoGenerateColumns: Flase/True ( i tried both) If i remove the gvOff.Columns[index].HeaderText portions, GridView works fine, but when i put the gvOff.Columns.HeaderText, i get the exceptional error.
, i couldn't solve it. If you need further info, inform me.
Hold on! I commented the HeaderText portion and tested int i = gvOffer.Columns.Count; I found count is 0 eventhough the columns print out with DataBind()... Why? NOTE: AutoColumn in this case is set to true. I guess i will have to edit the column names from DataTable.
I have used the DataKeyNames property of the GridView to assign the column name whose visible property is set to false to get the cells value when the column is kept invisible. But, sometimes there is an error on this line of code - string cellValue = GridView.DataKeys[e.NewEditIndex].Value.ToString(); Following Error is generated -
Server Error in '/' Application. Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index
I have been trying to hide a column but make use of the value in another function but the function i am trying to hide it give me and error at the embolded line. System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Public Sub FetchDetails() Dim valtable As DataTable = New DataTable() valtable.Columns.Add("LINK") valtable.Columns.Add("WATCH PERIOD") valtable.Columns.Add("DAY ENTRY") valtable.Columns.Add("listid") Dim seltext As String = "SELECT [Watchlistname], [Watchlisturl], [Watchlistdate],[listid] FROM [Watchlist]" Dim madap As SqlDataAdapter = New SqlDataAdapter(seltext, Connection()) Dim mdset As DataSet = New DataSet() Dim i As Integer = 0, pager As Integer = 0 madap.Fill(mdset, "WATCHLIST") Session("tab") = mdset.Tables("WATCHLIST") For Each arow As DataRow In Session("tab").Rows Dim valrow As DataRow = valtable.NewRow() valrow("LINK") = arow("Watchlisturl") valrow("WATCH PERIOD") = arow("Watchlistname") valrow("DAY ENTRY") = arow("Watchlistdate") valrow("listid") = arow("listid") valtable.Rows.Add(valrow) Next 'Dim str As String = ChrW(8358) gridWatchlist.DataSource = valtable gridWatchlist.DataBind() gridWatchlist.HeaderRow.Cells(1).Visible = False gridWatchlist.HeaderRow.Cells(2).Text = "WATCH PERIOD" gridWatchlist.HeaderRow.Cells(3).Text = "DAY ENTRY" gridWatchlist.Columns(4).Visible = False End Sub
A dataview is throwing an out of range exception when a page submit button is clicked. The strange part is if you change the data in the dataview by selecting a different person in the DDL the page works fine. Its only when the page loads and the default person in the DDL is when the DataView throws the exception.
The exception is thrown on the last line when I add DV.Rows(0).Cells(1).Text to the id_num parameter. I know there is a value in the dataview because it is displayed on the page. I can refresh the dataview with another person's information and the code works fine. This really has me confused. Here is a bit of the code behind.
Dim dashDataSource As New SqlDataSource() dashDataSource.ConnectionString = ConfigurationManager.ConnectionStrings("SSSConnectionString2").ToString() dashDataSource.InsertCommandType = SqlDataSourceCommandType.Text dashDataSource.InsertCommand = "INSERT INTO tblAcadReferrals(all columns and parameter info here)" dashDataSourceInsertParameters.Add("id_num", DV.Rows(0).Cells(1).Text)
I am getting the below error when I am trying to export RDLC report data into Excel sheet using Microsoft report viewer control."Index was out of range. Must be non-negative and less than the size of the collection.Parameter name: index"