PDA

View Full Version : سوال: مشکل در دسترسی به محتویات گریدویو



mohsen.nsb44
شنبه 18 بهمن 1393, 13:23 عصر
سلام
من از طریق کد زیر اطلاعات رو از طریق دیتاتیبل و سیشن داخل گریدویو میریزم
میخوام اطلاعات اونو در بانک ذخیره کنم اما خطای زیر داده میشه
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index


از کد زیر استفاده کردم







int i = 0;
string title = string.Empty;
title = GridView1.Rows[0].Cells[0].Text.ToString();
string body = txtCount.Text;
long price=long.Parse( GridView1.Rows[0].Cells[4].Text);
string priceKol =string.Empty;
string cod = txtCode.Text;

if (Session["dt"] == null)
{
DataTable dt = new DataTable();

DataColumn dc1 = new DataColumn("ردیف");
DataColumn dc2 = new DataColumn("نام محصول");
DataColumn dc3 = new DataColumn("تعداد");
DataColumn dc4=new DataColumn("قیمت جزء");
DataColumn dc5 = new DataColumn("قیمت کل ");
DataColumn dc6 = new DataColumn("کد محصول");

dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc3);
dt.Columns.Add(dc4);
dt.Columns.Add(dc5);
dt.Columns.Add(dc6);

dt.Rows.Add(new object[] { i, title, body,price,priceKol,cod });

Session["dt"] = dt;

GridView3.DataSource = dt;
GridView3.DataBind();
for (int j = 0; j < GridView3.Rows.Count; j++)
{
GridView3.Rows[j].Cells[0].Text = (j + 1).ToString();
GridView3.Rows[j].Cells[4].Text = (long.Parse(GridView3.Rows[j].Cells[3].Text) * int.Parse(GridView3.Rows[j].Cells[2].Text)).ToString();
}
}
else
{
DataTable dtTemp = (DataTable)Session["dt"];
dtTemp.Rows.Add(new object[] { i, title, body,price,priceKol,cod });
Session["dt"] = dtTemp;

GridView3.DataSource = dtTemp;
GridView3.DataBind();
for (int j = 0; j < GridView3.Rows.Count; j++)
{
GridView3.Rows[j].Cells[0].Text = (j + 1).ToString();
GridView3.Rows[j].Cells[4].Text = (long.Parse(GridView3.Rows[j].Cells[3].Text) * int.Parse(GridView3.Rows[j].Cells[2].Text)).ToString();

}
}







حال برای ذخیره از کد زیر استفاده کردم


for (int i = 0; i < GridView3.Rows.Count; i++)
{


SqlConnection con2 = new SqlConnection();

con2.ConnectionString = System.Configuration.ConfigurationManager.Connecti onStrings["cn"].ConnectionString;

SqlCommand cmd2 = new SqlCommand("Sp", con2);

cmd2.CommandType = CommandType.StoredProcedure;

cmd2.Parameters.AddWithValue("@CodeM",long.Parse( GridView3.Rows[i].Cells[5].Text)); }

fakhravari
شنبه 18 بهمن 1393, 14:02 عصر
روش کارت خرابه
ترتیب مراحل بگوو

mohsen.nsb44
شنبه 18 بهمن 1393, 14:29 عصر
روش کارت خرابه
ترتیب مراحل بگوو

من اطلاعاتو با جستجو در گریدویو نمایش میدم با سشن و دیتاتیبل
بعد میخوام داخل بانک ثبتش کنم
همین

fatboy
شنبه 18 بهمن 1393, 19:32 عصر
سلام
این خطا یعنی ایندکس درست نیست مثلا برنامه می خواهد اطلاعات رو از گرید ویو سطر 5 ام ستون 2 ام رو بخونه ولی چنین سطری یا چنین ستونی وجود نداره.
خط چندم این کدی که گذاشتین خطا میده؟

fakhravari
یک شنبه 19 بهمن 1393, 00:53 صبح
میخوای نتیجه جستجو ثبت کنی؟

mohsen.nsb44
یک شنبه 19 بهمن 1393, 09:22 صبح
سلام
این خطا یعنی ایندکس درست نیست مثلا برنامه می خواهد اطلاعات رو از گرید ویو سطر 5 ام ستون 2 ام رو بخونه ولی چنین سطری یا چنین ستونی وجود نداره.
خط چندم این کدی که گذاشتین خطا میده؟

خودم میدونم دلیل این خطا چیه
اما نمیدونم چرا این خطا رو میده در صورتی که گریدویو داده ها رو نمایش میده

mohsen.nsb44
یک شنبه 19 بهمن 1393, 09:24 صبح
میخوای نتیجه جستجو ثبت کنی؟

بله میخوام نتیجه جستجو ها که در داخل گریدویو نمایش داده شده اونارو بعد از کلیک همشو تو بانک ثبت کنم اما همونطور که میبینید خطا میده که داده ای در گریدویو نیست
در صورتی که داده ها در گریدویو نمایش داده میشن

maryam145
یک شنبه 19 بهمن 1393, 09:42 صبح
سلام خسته نباشین دوستان من تو فرم ام ی کمبوباکس قراردادم و یک گریدویو می خوام وقتی از کمبوباکسم گروه مشخصی و کلیک میکنه جدولم فیلتربشه وفقط بعضی سطرهارو نشون بده ولی خطای
sqlExption wa unhandle ?اینم کدی ک نوشتم
var query = from fa in linq.persenels
where fa.idgroup.Equals(comboBox1.SelectedValue)
select fa;
dataGridView1.DataSource = query;

fakhravari
یک شنبه 19 بهمن 1393, 12:30 عصر
ببنید شما یک دیتاتیبل دارید که ستون های اون مشخصه
یک حلقه for بزارید و یک تابع بنویسید که به تعداد ستون dt ورودیش باشه .
یک insert ساده است

mohsen.nsb44
یک شنبه 19 بهمن 1393, 14:03 عصر
ببنید شما یک دیتاتیبل دارید که ستون های اون مشخصه
یک حلقه for بزارید و یک تابع بنویسید که به تعداد ستون dt ورودیش باشه .
یک insert ساده است
ممنون تونستم مشکلمو حل کنم
مشکل از کد های من نبود
تو اون صفحه چند گریدویو بود که اسم یه گرید دیگه رو من نوشته بودم و اون گرید به تعداد وارده من ستون نداشت و باعث بروز خطا میشد
از همه دوستانی که نظر دادن تشکر میکنم