TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
Narasiman nar
NA
64
22.1k
Index was out of range. Must be non-negative and less than t
Jun 14 2018 7:10 AM
Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index'
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(!IsPostBack)
{
BindData();
}
}
protected
void
BindData()
{
String strConnString = ConfigurationManager.ConnectionStrings[
"ConnectionStrings"
].ConnectionString;
SqlConnection con =
new
SqlConnection(strConnString);
SqlCommand cmd =
new
SqlCommand(
"select * from [transact].[transaction_item] where status = 'new'"
, con);
con.Open();
SqlDataAdapter da =
new
SqlDataAdapter();
DataSet ds =
new
DataSet();
da.SelectCommand = cmd;
da.Fill(ds);
grdRpt.DataSource = ds;
grdRpt.DataBind();
}
protected
void
grdRpt_PageIndexChanging(
object
sender, GridViewPageEventArgs e)
{
grdRpt.PageIndex = e.NewPageIndex;
BindData();
}
private
void
PopulateCheckedValues()
{
System.Collections.ArrayList userdetails = (System.Collections.ArrayList)Session[
"CHECKED_ITEMS"
];
if
(userdetails !=
null
&& userdetails.Count > 0)
{
foreach
(GridViewRow gvrow
in
grdRpt.Rows)
{
int
index = (
int
)grdRpt.DataKeys[gvrow.RowIndex].Value;
if
(userdetails.Contains(index))
{
CheckBox myCheckBox = (CheckBox)gvrow.FindControl(
"chkselecdata"
);
myCheckBox.Checked =
true
;
}
}
}
}
private
void
SaveCheckedValues()
{
System.Collections.ArrayList userdetails =
new
System.Collections.ArrayList();
int
index = -1;
foreach
(GridViewRow gvrow
in
grdRpt.Rows)
{
index = (
int
)grdRpt.DataKeys[gvrow.RowIndex].Value;
bool
result = ((CheckBox)gvrow.FindControl(
"chkselecdata"
)).Checked;
if
(Session[
"CHECKED_ITEMS"
] !=
null
)
userdetails = (System.Collections.ArrayList)Session[
"CHECKED_ITEMS"
];
if
(result)
{
if
(!userdetails.Contains(index))
userdetails.Add(index);
}
else
userdetails.Remove(index);
}
if
(userdetails !=
null
&& userdetails.Count > 0)
Session[
"CHECKED_ITEMS"
] = userdetails;
}
protected
void
btnsubmit_Click(
object
sender, EventArgs e)
{
String strConnString = ConfigurationManager.ConnectionStrings[
"ConnectionStrings"
].ConnectionString;
SqlConnection con =
new
SqlConnection(strConnString);
con.Open();
foreach
(GridViewRow row
in
grdRpt.Rows)
{
int
key = (
int
)grdRpt.DataKeys[row.RowIndex].Value;
CheckBox cb = (CheckBox)row.FindControl(
"chkselecdata"
);
SqlCommand cmd =
new
SqlCommand(
"UPDATE [transact].[transaction_item] SET Status = 'Ready' Where Id="
+ key.ToString(), con);
cmd.ExecuteNonQuery();
}
con.Close();
}
in the first page five records will be displayed and in the second page another five records will be displayed.
suppose in the first page i check two rows and in the second page i check another two rows means that selected check box rows to be update in the [transact].[transaction_item] in the table.
when i run the code shows error as follows
Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index.
The error shows in below line as follows
index = (int)grdRpt.DataKeys[gvrow.RowIndex].Value;
how to solve this error. please let me know.
Reply
Answers (
1
)
print echo (msg) using conditional if else using batch scrip
I have doubt in download a text file