View Full Version : حرفه ای: مشكل با StoredProcedure ؟
alireza_rashvand
دوشنبه 26 دی 1390, 15:42 عصر
سلام
از StoredProcedure براي نمايش GridView و هم براي حذف داده از ديتابيس استفاده مي كنم .
زماني كه داده را حذف مي كنم و سپس GridView خود را نمايش مي دهم GridView نمايش داده نمي شود .
اگر من يك دكمه براي حذف قرار دهم و يك دكمه براي لود GridView مشكل حل است ولي زماني كه با يك دكمه هم مي خواهم حذف كنم و هم نمايش دچار مشكل مي شوم.
حل اين مشكل برايم بسيار اهميت دارد مدت هاست به دنبال حل ان مي گردم ولي هنوز به جواب نرسيده ام .
اميد وارم علم دوستان كمك كند.
اگر توضيح بيشتري لازم است گويد بگويم.
dorparasti
دوشنبه 26 دی 1390, 15:46 عصر
چطور ؟
نحوه اتصال گرید ویو به دیتابیس چطوریه ؟ معمولاً پس از هر تغییری در دیتابیس تنها فراخوانی تابع بایند محتویات گریدویو را بروزرسانی می کنه
GridView1.DataBind();
alireza_rashvand
دوشنبه 26 دی 1390, 16:06 عصر
سلام
اتصال من بر اساس خود StoredProcedure مقدار دهي مي شود و در اخر نيز از كدي كه گفتيد استفاده شده است براي لود شدن گريد ويو.
اگر دقت كنيد گفتم كه اگر من دكمه اي براي لود كردن گريد ويو قرار دهم مشكل حل است ولي زماني كه از هر دو StoredProcedure (حذف، نمايش) استفاده مي كنم مشكل به وجود مي ايد .
مثلا:
protected void IBDelete_Click(object sender, ImageClickEventArgs e)
{
deleteStoredProcedure ();
showStoredProcedure ();
{
فرض كنيد كه تابع هاي بالا درست كار مي كنند.
alonemm
دوشنبه 26 دی 1390, 16:11 عصر
باسلام:
دوست من کدها رو به طور کامل بزارید تا راهنمایی کامل کنیم.
شادباشید.
alireza_rashvand
دوشنبه 26 دی 1390, 16:20 عصر
من از اين كد براي نمايش :
SqlConnection conecte= new SqlConnection("server=" + computer + ";database=" + database + ";integrated security=true");
SqlDataAdapter adapter = new SqlDataAdapter();
SqlCommand com;
DataSet set;
SqlDataReader dataReader;
DataTable dataTable = new DataTable();
----------------------------------------------------
adapter.SelectCommand = new SqlCommand();
adapter.SelectCommand.CommandType = CommandType.StoredProcedure;
adapter.SelectCommand.CommandText = "nameStoredProcedure";
adapter.SelectCommand.Connection = conecte;
adapter.SelectCommand.Parameters.AddWithValue("nameParametersStoredProcedure", valueParametersStoredProcedure"");
conecte.Open();
adapter.Fill(dataTable);
dataReader = adapter.SelectCommand.ExecuteReader();
gridView.DataSource = dataTable;
gridView.DataBind();
conecte.Close();
و اين كد براي حذف استفاده مي كنم :
SqlConnection conecte= new SqlConnection("server=" + computer + ";database=" + database + ";integrated security=true");
SqlDataAdapter adapter = new SqlDataAdapter();
SqlCommand com;
DataSet set;
SqlDataReader dataReader;
DataTable dataTable = new DataTable();
----------------------------------------------------
adapter.SelectCommand = new SqlCommand();
adapter.SelectCommand.CommandType = CommandType.StoredProcedure;
adapter.SelectCommand.CommandText = "nameStoredProcedure";
adapter.SelectCommand.Connection = conecte;
adapter.SelectCommand.Parameters.AddWithValue("nameParametersStoredProcedure", "valueParametersStoredProcedure");
conecte.Open();
adapter.SelectCommand.ExecuteNonQuery();
conecte.Close();
alireza_rashvand
دوشنبه 26 دی 1390, 17:03 عصر
ايا كد من مشكلي دارد يا راه ديگري براساس StoredProcedure ها است كه انجام دهم .
xalerebvar
دوشنبه 26 دی 1390, 19:12 عصر
سلام
از StoredProcedure براي نمايش GridView و هم براي حذف داده از ديتابيس استفاده مي كنم .
زماني كه داده را حذف مي كنم و سپس GridView خود را نمايش مي دهم GridView نمايش داده نمي شود .
اگر من يك دكمه براي حذف قرار دهم و يك دكمه براي لود GridView مشكل حل است ولي زماني كه با يك دكمه هم مي خواهم حذف كنم و هم نمايش دچار مشكل مي شوم.
دقیقا متوجه سئوالتو نشدم یعنی چی یه دکمه قرار دادید که می خواهید هم حذف رو انجام بده هم نمایش رو؟
اگه منظورتون اینه که یه دکمه هست که اگه روش کلیک کنید داده حذف بشه و بعد GridView رفرش بشه چه نیازی به اینکار داری.
کافیه یه دکمه بصورت تمپلت تو GridView قرار بدی و خاصیت Command name ت رو ID همون دکمه بزاری حالا یه تابع براش طراحی کن که داده رو حذف کنه ، البته یه تابع هم بایستی داشته باشی که داده قرار گرفته تو جدولت رو بریزه داخل GridView و بعد از اعمال حذف کردن همین تابع رو یکبار فراخوانی کن
mm2100
دوشنبه 26 دی 1390, 19:24 عصر
protected void IBDelete_Click(object sender, ImageClickEventArgs e)
{
deleteStoredProcedure ();
showStoredProcedure ();
{
سلام
تابع showStoredProcedure داخل deleteStoredProcedure صدا بزن تست کن ببین جواب میده
alireza_rashvand
سه شنبه 27 دی 1390, 10:43 صبح
سلام
دوستان سوال را خوب متوجه نشده اند .
البته همان طور كه يكي از دوستان گفت مي خواهم انجام دهم يعني با يك كليك هم حذف هم نمايش .
يكي از دوستان گفته بود كه چرا اين كار رو مي كنيد و فلان كارو بكن .
فرض كنيد كه من يك ايميل ساختم مانند ياهو يا جيميل مي خواهم كاربر وفقي نامه خود را از ليست انتخاب كرد و خواند دكمه هم براي ان نمايش داده مي شود كه ان نامه را حذف مي كند پس از اين كار صفحه ليست نامه ها يا همان Inbox نمايش داده مي شود كه حال ديگر ان نامه در ان نبايد ديده شود پس هر دوكار هم زمان بايد انجام شود .(هم حذف و هم نمايش)
بازهم سپاس از دوستان كه ياري مي رسانند
alonemm
سه شنبه 27 دی 1390, 11:18 صبح
باسلام:
در قالب راهنمایی شما :
http://msdn.microsoft.com/en-us/library/ms972940.aspx
alireza_rashvand
سه شنبه 27 دی 1390, 11:58 صبح
با تشكر از لطف شما .
البته من در حذف و نمايش ان مشكلي ندارم .ولي بازهم ممنون از شما .
براي حل اين مشكل يك سوال ساده .
در جيميل پس از اين كه رو ايميل دريافت شده كليك مي كنيم ان نمايش داده مي شود .(من در ياهو عضو نيستم ولي فكر كنم ان نيز همين گونه است )
حال اگر در قسمت بالا ي صفحه دكمه حذف را بزنيم چه كار انجام مي شود ؟
ايا اول حذف و سپس ليست ميل ها نمايش داده نمي شود ؟
پس هر دو كار همزمانانجام مي شود (حذف ، ويرايش ) درست است ؟
پس لازم است دكمه حذفي باشد .
ان گونه كه دوستان مي گويند زماني به كار مي ايد كه ما بخواهيم مستقيم از روي خود ليست ان را حذف كنيم كه در اين مورد مشكلي ندارم و قابل حل است ولي با دكمه چه كنم . ايا دوستان تا به حال اين كار را نكرده اند ؟
alonemm
سه شنبه 27 دی 1390, 13:40 عصر
خب شما میخواید یک دکمه حذف در گرید داشته باشید؟
روند کار سایت های میل همینه که اول اطلاعات سطر مورد نظر پاک شده و دوباره عملیات واکشی داده و بایند گرید انجام میشه.
alireza_rashvand
سه شنبه 27 دی 1390, 15:37 عصر
دكمه حذفي در گريدوي نمي خواهم قرار دهم بلكه پس از انتخاب از گريد ويو متن خبر در همان صفحه درون يك پنل ديگر نمايش داده مي شود و در پايين همان يك دكمه حذف قرار مي دهم . البته پس از انتخاب از گريدوي ان گريدوي را مخفي مي كنم . و پس از زدن كليك دكمه حذف ، ان را نمايش مي دهم .
به نظر من مشكل بين كد ستوربروسيجر و ديتابيس پيش مي ايد چون اگر من اين كد ها را تك به تك در هر ريسپانس اعمال كنم مشكلي پيش نمي ايد .
خوب است كه بگويم ، منظورم از مشكل اين است :
داده مورد نظر حذف مي شود ولي نمايش كه مي خواهد بدهد هيچ داده اي در گريد ويو نمايش داده نمي شود .
alonemm
سه شنبه 27 دی 1390, 16:26 عصر
دوست من :
من کدهاتون رو اجرا نکردم و دسترسی به اجرا هم ندارم.
در قالب راهنمایی:
یک متد برای حذف رکورد بنویسید که مثلا ID رو به عنوان پارامتر دریافت میکنه و این ردیف رو حذف میکنه.
یک متد هم داشته باشید که باز عملیات Select رو از جدول پایگاه داده داشته باشه و گریدتون رو دوباره بایند کنید.
شادباشید.
alireza_rashvand
چهارشنبه 28 دی 1390, 11:21 صبح
سلام
دوستان توجه كنند كه در پست ها قبل گفتم كه من هيچ مشكلي نه در حذف و نه در نمايش دارم بلكه مشكل در اجراي هم زمان انهاست.
فقط كساني مي توانند مشكل من را حل كنند كه از StoredProcedure استفاده مي كنند .
بازهم از همه دوستان تشكر مي كنم.
alireza_rashvand
پنج شنبه 29 دی 1390, 17:22 عصر
با سلام دوباره
ايا كسي هست كه زياد از StoredProcedure استفاده كرده باشد ؟
اگر هست ،تمايل داشتيد ؛ در مورد سوال من گفت گو كنيم .
حتي اگر فكر مي كند كه اين مشكل را نمي توانيد حل كنيد .
همان گونه كه گفتم برايم حل اين مشل بسيار مهم است .
alireza_rashvand
شنبه 01 بهمن 1390, 09:00 صبح
سلام
به يك نكته در مورد اين سوال پي بردم.
اگر از ايجكس استفاده شود مشكل حل است يعني اين عمل در يك ابديت پنل انجام شود مشكلي پيش نمي ايد .
پس چرا اين مشكل در يك رفت برگشت كامل نه به صورت ايجكس به وجود مي ايد معلوم نيست .
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.