Указанное приведение недопустимо
на первой странице будут показаны пять записей, а на второй странице-еще пять записей.
предположим, что на первой странице Я проверяю две строки, а на второй странице Я проверяю еще две строки означает, что выбранные строки флажка должны быть обновлены в [transact].[transaction_item] в таблице.
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) { SaveCheckedValues(); grdRpt.PageIndex = e.NewPageIndex; BindData(); PopulateCheckedValues(); } 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; }
когда я запускаю приведенный выше код показывает ошибку следующим образом
указанное приведение недопустимо
Приведенная выше ошибка отображается в следующей строке следующим образом
index = (int)grdRpt.DataKeys[gvrow.Параметр rowindex].Значение;
как исправить эту ошибку.
Что я уже пробовал:
См. выше...