PDA

View Full Version : gridview edit



essa_61
سه شنبه 03 مهر 1386, 17:25 عصر
من یک gridview دارم که در حالت edit در یکی از سلولهاش یک کمبوباکس قرار دادم حالا می خوام وقتی کاربر دکمه edit رو زد این کمبو باکس که ظاهر میشه به یک تیبل bind بشه مین کد های زیر رو توی even گرید ویوGridView1_RowDataBoundنوشتم ولی در گرید ویو یکی در میان کمبو باکسهام بایند میشن چرا ؟؟؟






if (e.Row.RowState == DataControlRowState.Edit)
{
SqlConnection conn = newSqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename='|DATADIRECTO RY|\db_buy.mdf';Integrated Security=True;User Instance=True");
SqlDataAdapter da = newSqlDataAdapter("SELECT * FROM tbl_producter", conn);
DataSet ds_dl_name_pr = newDataSet();
conn.Open();
da.Fill(ds_dl_name_pr, "kol");
conn.Close();
DropDownList dl_ed_namegoods = (DropDownList)e.Row.Cells[2].FindControl("dl_ed_namegoods");
dl_ed_namegoods.DataSource = ds_dl_name_pr.Tables[0];
dl_ed_namegoods.DataTextField = "name_pr";
dl_ed_namegoods.DataValueField = "id";
dl_ed_namegoods.DataBind();
}

Behrouz_Rad
سه شنبه 03 مهر 1386, 23:14 عصر
این یکی از نکاتی هست که من در کدهای تاپیک "اعمال متداول با GridView" به اون پرداختم.
در روال DataBound کنترل GridView، در صورتی که بخواید وضعیت ردیف یکی از ردیف های GridView رو برای حالت Edit بررسی کنید، میشه به شکل زیر عمل کرد:


If (e.Row.RowType = DataControlRowType.DataRow) AndAlso (e.Row.RowState = DataControlRowState.Edit)

در کد فوق گفته شده که اعمالی که انجام میشه بر روی ردیف هایی هست که حاوی داده هستند و در مد ویرایش قرار دارند.
مشکلی که وجود داره اینه که در ردیف های زوج (که در دات نت به عنوان ردیف های Alternate شناخته میشن)، DataControlRowState مقدار Edit رو نداره!
در نتیجه دستور فوق بر روی ردیف های زوج تاثیری نخواهد داشت و تنها ردیف های فرد تحت تاثیر دستورات قرار خواهند گرفت…
این مشکلی بود که کمی وقت من رو برای بر طرف کردن اون گرفت.
برای حل این مشکل، من مقدار RowState رو به ازای هر ردیف چاپ کردم و دیدم که این خاصیت برای ردیف های Alternate، مقدار “Alternate, Edit” رو بر میگردونه!!!

شرط If رو به شکل ذیل بنویس:


If ((e.Row.RowType = DataControlRowType.DataRow) AndAlso (e.Row.RowState = DataControlRowState.Edit)) OrElse ((e.Row.RowType = DataControlRowType.DataRow) AndAlso (e.Row.RowState.ToString() = "Alternate, Edit"))

موفق باشید.