PDA

View Full Version : سوال: چک باکس گریدویو



mahsa.c3
چهارشنبه 10 آذر 1389, 01:33 صبح
میشه کمک کنید و مشکل من رو حل کنید.
یک گرید ویو دارم با چندتا ستون که یکیشون temp field هست که در واقع یه چک باکسه، تو 1صفحه وب (با c# ، asp.net) یک botton پایین گریدویو گذاشتم که وقتی روش کلیک شه بسته به اینکه چک باکس تیک داشته باشه یک لیبل رو نشون بده(خاصیت لیبل رو true کنه) کدش رو نوشتم(گیر آوردم!) errorنداره،اما عمل نمیکنه! وقتی خط به خط debug میکنم، بدون توجه به اینکه من تیک چک باکس رو گذاشتم از حلقه if میپره!:اشتباه:کسی هس بهم بگه آیا من باید کار خاصی کنم؟مثلأ خاصیت کنترلی رو باید عوض کنم؟:ناراحت: اصأ چه کار کنم؟:ناراحت:
کدمم اینه :


protected void btndelete_Click(object sender, EventArgs e)
{
bool AtleastOneRowSelected = false;
foreach (GridViewRow row in GridView1.Rows)
{
// Access the CheckBox
CheckBox cb = (CheckBox)row.FindControl("select4del");
if ( cb !=null && cb.Checked == true)
{
// Delete row! (Well, not really...)
AtleastOneRowSelected = true;
// First, get the Phone number for the selected row
int number = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Value);
// "Delete" the row
lbdel.Text += string.Format("This would have deleted number {0}<br />", number);
}
}
// Show the Label if at least one row was deleted...
lbdel.Visible = AtleastOneRowSelected;
}

mahsa.c3
چهارشنبه 10 آذر 1389, 02:41 صبح
تورو خدا یکی جوابمو بده :(
تا صب نمیکشم:(
از عصبانیت بیچارگی منفجر میشم:"(

taghi.km
چهارشنبه 10 آذر 1389, 08:37 صبح
form_load رو هم بزار

behiunforgiven
چهارشنبه 10 آذر 1389, 11:55 صبح
خب دوست من حتما شرطت ایراد داره که می پره بیرون
فقط این شرط رو بذار


if(cb.cheked)

mahsa.c3
چهارشنبه 10 آذر 1389, 14:52 عصر
شرطمم عوض کردم! انقد کدمو زیرو بالا کردم!آخرم نشد!تازه کدمم compeleteعوض شد،شد این:




protected void btndelete_Click(object sender, EventArgs e)
{
bool AtleastOneRowSelected = false;

int row;
row = GridView1.Rows.Count;
for (int i = 0; i < row; i++)
{
// Access the CheckBox
CheckBox chbx =(CheckBox) GridView1.Rows.FindControl("Select4del");
if ( chbx.Checked)
{
// Delete row! (Well, not really...)
AtleastOneRowSelected = true;
// First, get the Phone number for the selected row
String number = GridView1.Rows[rowindex].Cells[3].Text;
// "Delete" the row
lbdel.Text += string.Format("This would have deleted number {0}<br />", number);
}
}
// Show the Label if at least one row was deleted...
lbdel.Visible = AtleastOneRowSelected;
}


وقتی فقط این شرطو میزارم این error رو میده:
[I]Object reference not set to an instance of an object.


یه چیزه جالب اینه که من قبلأ با همین شرطی که گفتین یه برنامه نوشتم جواب داد!و همچنان بدونه مشکل کار میکنه!!! وقتی با هم مقایسه شون میکنم هیچ فرقی با هم ندارن!!!:ناراحت:

mahsa.c3
چهارشنبه 10 آذر 1389, 14:54 عصر
کجا بزارم؟اصأ چی هس؟!:افسرده:

mahsa.c3
چهارشنبه 10 آذر 1389, 15:08 عصر
یعنی انقد کدم خفنه؟!:لبخند::لبخند: کاری کردم که خود vs هم نمیفهمه چطوری compile کنه!:لبخند:
بابا من تازه کارم!
کد بالا رو که دارین؟
دکتری کنین ببینین چرا از حلقه if میپره؟!!!!
چرا error میده؟!!!

Amir Taghavi
چهارشنبه 10 آذر 1389, 15:31 عصر
foreach(GridViewRow row in GridView1.Rows)
{
CheckBox chk = row.FindControl("chkDelete") as CheckBox;
if(chk.Checked)
{
int id = Convert.ToInt32((row.FindControl("hfID") as HiddenField).Value);
// del cmd
}
}تو template field که checkbox توش گذاشتی یه hiddenfield هم بذار (hfID) و bind کن به فیلد کلید جدولت!

taghi.km
چهارشنبه 10 آذر 1389, 16:20 عصر
خانم اون form_load رو بذار ببینیم چی نوشتی اونجا

iman_ad
چهارشنبه 10 آذر 1389, 18:44 عصر
کدت خفن نیست
فقط هر رویی دیتا رو نیست.
row.RowType==DataControlRowType.DataRow
این شرط تو هم چک کن

mahsa.c3
پنج شنبه 11 آذر 1389, 21:21 عصر
کدت خفن نیست
فقط هر رویی دیتا رو نیست.
row.RowType==DataControlRowType.DataRow
این شرط تو هم چک کن

دکترجان مثکه ادبیاتتم ضعیفه ها!من کاملأ یک منظور کنایی داشتم ازین که گفتم "کدم خفنه!!"
به هر حال از همگی ممنونم ازین که وقت گذاشتین
ولی یک پیشنهاد!بار دیگه خواستین به کسی کمک کنید یکم مهرفونتر!:ناراحت: مثه اون آقا مهربون چشم قشنگه:لبخند:(چاکریم داداش:تشویق:)
خوب من که گفتم تازه کارم، بلد نیسم!چرا سرم داد میزنین:ناراحت:

mahsa.c3
پنج شنبه 11 آذر 1389, 21:23 عصر
با تشکر از همه اساتید.درست شد:تشویق:نمیدونم چه ربطی داشت اما enable view state گریدمو false کردم، data key name رو هم گذاشتم همون number بعد راه افتاد!