PDA

View Full Version : پی بردن به محتوی یکی از فیلدهای گرید



A.Yousefi
چهارشنبه 19 بهمن 1390, 22:35 عصر
سلام
من تو گرید ویوم یه تمپلیت فیلد در نظر گرفتم و یه چک باکس انداختم توش،میخوام وقتی کاربر چک باکسش یه رکوردیو تیک زد محتوی یکی دیگه از فیلد های گریدویوم رو مثلا فیلد Name ام رو به دست بیارم،من با استفاده از کد زیر میفهمم کدوم چک باکسا تیک خودن:




foreach (GridViewRow row in GridView1.Rows)

{



CheckBox checkbox = (CheckBox)row.FindControl("CheckBox1");



if (checkbox.Checked)

{



}

}

اما تو بلاک if ام نمیدونم چی بنویسم؟
میخوام اونجا یه متغیر string تعریف کنم و Name اون رکوردهایی که کاربر تیک زدرو بریزم توش،چجوری میتونم اینکارو کنم؟

fakhravari
پنج شنبه 20 بهمن 1390, 01:21 صبح
توی دستور باتن
foreach (GridViewRow row in GridView1.Rows)
{


Label l1 = row.FindControl("Label1") as Label;
Label l2 = row.FindControl("Label2") as Label;
Label l3 = row.FindControl("Label3") as Label;
Label l4 = row.FindControl("Label5") as Label;
CheckBox ck = row.FindControl("CheckBox1") as CheckBox;


if (ck.Checked == true)
{

if (l1.Text != null && l2.Text != null && l3.Text != null && l4.Text != null)
{
string value_L1 = l1.Text;
string value_L2 = l2.Text;
int value_L3 = Int32.Parse(l3.Text);
int value_L4 = Int32.Parse(l4.Text);

chek(cd_id, cd_cat);

if (sumkol != 20 && sumkol < 20)
{

if (sumkol + Int32.Parse(l3.Text.ToString()) <= 20)
{
Add(value_L4, value_L1, value_L2, value_L3, cd_id, cd_cat);
}
else
{
return;
}
}
else
{
Label6.Text = "20<";
return;

}
}
}

http://barnamenevis.org/showthread.php?319991-%D8%AB%D8%A8%D8%AA-%D8%AA%D9%85%D8%A7%D9%85%DB%8C-%D9%86%D9%85%D8%B1%D8%A7%D8%AA-%D8%A8%D8%A7-%DB%8C%DA%A9-%DA%A9%D9%84%DB%8C%DA%A9&highlight=%D8%AB%D8%A8%D8%AA+%D9%86%D9%85%D8%B1%D8 %A7%D8%AA

A.Yousefi
پنج شنبه 20 بهمن 1390, 11:49 صبح
ممنون از جواب،با این حساب باید تو کلا گرید ویوم رو با استفاده از لیبلهای بایند شده بسازم درسته؟

A.Yousefi
پنج شنبه 20 بهمن 1390, 12:27 عصر
توی دستور باتن
foreach (GridViewRow row in GridView1.Rows)
{

Label l1 = row.FindControl("Label1") as Label;
Label l2 = row.FindControl("Label2") as Label;
Label l3 = row.FindControl("Label3") as Label;
Label l4 = row.FindControl("Label5") as Label;
CheckBox ck = row.FindControl("CheckBox1") as CheckBox;

if (ck.Checked == true)
{
if (l1.Text != null && l2.Text != null && l3.Text != null && l4.Text != null)
{
string value_L1 = l1.Text;
string value_L2 = l2.Text;
int value_L3 = Int32.Parse(l3.Text);
int value_L4 = Int32.Parse(l4.Text);
chek(cd_id, cd_cat);
if (sumkol != 20 && sumkol < 20)
{
if (sumkol + Int32.Parse(l3.Text.ToString()) <= 20)
{
Add(value_L4, value_L1, value_L2, value_L3, cd_id, cd_cat);
}
else
{
return;
}
}
else
{
Label6.Text = "20<";
return;
}
}
}

http://barnamenevis.org/showthread.php?319991-%D8%AB%D8%A8%D8%AA-%D8%AA%D9%85%D8%A7%D9%85%DB%8C-%D9%86%D9%85%D8%B1%D8%A7%D8%AA-%D8%A8%D8%A7-%DB%8C%DA%A9-%DA%A9%D9%84%DB%8C%DA%A9&highlight=%D8%AB%D8%A8%D8%AA+%D9%86%D9%85%D8%B1%D8 %A7%D8%AA
من فک میکنم پاسخی که شما دادین کاملا اشتباه باشه،منظورم اینه که اونهمه لیبل بایند شده فقط برای اینکه بخوایم بفهمیم محتوی یه سلول از رکورد انتخاب شده چیه اصلا راه درستی به نظر نمیرسه،من با سرچ موفق شدم این تیکه کد جالب رو به دست بیارم:



string

s = GridView1.Rows[i].Cells[1].Text;

منتها اون i رو خودم تو حلقه حساب میکنم که فک میکنم کار جالی نباشه البته به جوابی که میخواستم رسیدما اما باید راه راحتتری هم باشه،آخه تو اون سایتی که اینو ازش برداشتم گفته :


GridView1.Rows[SelectedIndex].Cells[1].Text

ولی تو اون قسمت اصلا امکان استفاده از SelectedIndex نیست وقتی هم میگم GridView1.SelectIndex باز ارور out of range میده،نمیدونم مشکلش چیه؟

A.Yousefi
پنج شنبه 20 بهمن 1390, 12:34 عصر
وقتی تو اون قسمت این کد رو مینوسم هم :


string


s = GridView1.Rows[GridView1.SelectedRow.RowIndex].Cells[1].Text;


میگه:
Object reference not set to an instance of an object.
انگار اصلا هیچ سطری تو گرید وجود نداره،پیج لودم هم خالیه ها!
منظور از سطر انتخاب شده همون چک باکس تیک خوردس؟

fakhravari
پنج شنبه 20 بهمن 1390, 13:08 عصر
از روش تمپلت کار میکنم من .
شما از روش پیشفرض کار میکنید

A.Yousefi
پنج شنبه 20 بهمن 1390, 13:13 عصر
از روش تمپلت کار میکنم من .
شما از روش پیشفرض کار میکنید
البته روش و نظر شما محترمه ولی وقتی میشه از روش های خیلی راحت و اصولی تری استفاده کرد من ترجیح میدم از اونا استفاده کنم.
ولی الان نمیدونم چرا پیغام Object reference not set to an instance of an object رو دریافت میکنم!

A.Yousefi
پنج شنبه 20 بهمن 1390, 13:19 عصر
یافتم یافتم:


GridView1.Rows[row.RowIndex].Cells[1].Text;

row همون متغیری هست که تو foreach ازش استفاده میکردم،خیلی جالب بود!!

moslem.hady
پنج شنبه 20 بهمن 1390, 13:25 عصر
گرفتن مقدار یک فیلد در RowDataBound گریدویو

(http://programmer.persianblog.ir/post/29/%DA%AF%D8%B1%D9%81%D8%AA%D9%86%20%D9%85%D9%82%D8%A F%D8%A7%D8%B1%20%DB%8C%DA%A9%20%D9%81%DB%8C%D9%84% D8%AF%20%D8%AF%D8%B1%20RowDataBound%20%DA%AF%D8%B1 %DB%8C%D8%AF%D9%88%DB%8C%D9%88)

software2507
پنج شنبه 20 بهمن 1390, 16:34 عصر
سلام دوستان ممنون از راهنمايي هاي شما

منم حالا اگر بخوامركورد هايي كه تيك خورده رو همه رو فيل دهاش تو يك جدول ديگه ثبت كنم چي؟

فرض كنيد اين ليست غذاس مي خوام تمام ركورد هايي كه چك باكس اون ها تيك خورده در جدول سفارشات ثبت كنم چه كار بايد بكنم
:متفکر: برا پروژم اعصابمو داغون كرده

fakhravari
پنج شنبه 20 بهمن 1390, 20:13 عصر
خوب همون که گفتم پست 4 کجاش نامفهومه