السلام عليكم جميعا
في البداية أحب أشكر القائمين على هذا المنتدى الرائع والمشاركين والأعضاء فيه .
سؤالي هو :
كيف أقدر أعدل سجل موجود بالداتا قريد ، وكيف أعمل حذف أيضا ؟
حاولت بطرق أخرى ولكن العملية متعبة جدا أتمنى أحد يسعفني بطريقة سهلة ومفهومة.
شكرا
السلام عليكم جميعا
في البداية أحب أشكر القائمين على هذا المنتدى الرائع والمشاركين والأعضاء فيه .
سؤالي هو :
كيف أقدر أعدل سجل موجود بالداتا قريد ، وكيف أعمل حذف أيضا ؟
حاولت بطرق أخرى ولكن العملية متعبة جدا أتمنى أحد يسعفني بطريقة سهلة ومفهومة.
شكرا
يمكنك أن تعدل و تحذف و تضيف مباشرةً من الداتا جريد و بعد تذلك تقوم بتحديث الـDataSet هكذا:
SqlDataAdapter1.Update(DataSet11)
نفس الشئ ان كنت تستخدم OLEDB مع تغيير الـDataAdapter
هذه هي اسهل الطرق لتحديث البيانات عن طريق الداتا جريد.
رأس الحكمة الإيمان بالله
صحيح .
وشكرا على أهتمامك أولا ،
وثانيا الداتا جريد عندي في صفحة ويب بال ASP.NET وما يسمحلي إني أعدل أو أحذف مباشرة في الداتا جريد .
آسف لأني لم انتبه انك تستخدم ASP.Net، و في هذه الحالة سوف نضطر للجوء الى الطريقة الغير سهلة و الطويلة.
ستجد شرح مفسر في ملف الوورد المرفق يشرح لك كيف تصمم داتا جريد تستطيع من خلالها اضافة و حذف و تعديل للبيانات.
الملف ما هو الا جزء من فصل من كتاب اسمه The Ultimate VB.NET and ASP.NET Code Book،
و آسف اني استسهلت و لكني وجدت اني لن أضيف شيئاً أكثر من هذا الجزء.
ان كنت تريد الكتاب، اخبرني حتى ارفعه لك، بعد تجزئته، فحجمه حوالي 11 MB
رأس الحكمة الإيمان بالله
بارك الله فيك يامحمد وكثر الله من أمثالك .
أنا الآن راح أحاول أفهم الكود وبعدين أضيفه في برنامجي ، بس عندي سؤال عن نقطة معينة في الفنكشن DataSave :
ماذا يقصد بالسطر التالي :
ViewState.item("__Data")=dataset
وإذا تكرمت ممكن أحصل على نسخة من الكتاب المذكور
The Ultimate VB.NET and ASP.NET Code Book
وجزاك الله خير .
ViewState تمكنك من حفظ البيانات التي أدخلها الـUser في أي عنصر Control من عناصر الصفحة كـ TextBox مثلاً،
عندما يقوم الـUser بإدخال بيانات في الـTextBox و عناصر أخرى ثم يضغط Submit تذهب الصفحة الى الـServer ليتم عملية الـ Validation
و اذا وجد أي خطأ بالمدخلات التي أدخلها الـUser ترجع الصفحة مرة أخرى اليه ليقوم بتصحيح الخطأ و تجد ان كل المدخلات التي أدخلها الـUser لازالت موجودة
و السبب هنا هي ViewState، بدونها سوف يضطر الـUser لإدخال كل ما قام بإدخاله من قبل عندم ترجع له الصفحة لتعديل الخطأ لأن المدخلات لن تكون موجودة.
و في حالتنا هذه تقوم ViewState بحفظ البيانات المدخلة للـDataset و الجداول التي بها.
أتذكر مرة عندما كنت أملأ السيرة الذاتية الخاصة بي CV في احدى المواقع التوظيفية، وبعد حوالي نصف ساعة قضيتها في في كتابة البيانات الخاصة بي
و بعد الضغط على Submit بعد ذلك اظهرت لي الصفحة خطأ و يجب علي أن أضغط هذا الزر لأعود ثانية لأصحح الخطأ وعندما ضغط عليه فوجئت بأن كل البيانات التي كتبتها قد اختفت!!!!!
و كان علي وقتها أن أقوم بكتابة كل ما كتبته ثانية، و لكني لم أفعل بالطبع..........لو كان مطور الموقع استخدم ViewState لما عانيت كل هذه المعاناه.
اقتباسوإذا تكرمت ممكن أحصل على نسخة من الكتاب المذكورThe Ultimate VB.NET and ASP.NET Code Book
بالنسبة للكتاب أمهلني بعض الوقت لأجد مكاناً مناسباً أرفعه له فكما قلت لك من قبل ان حجمه 11 MB
رأس الحكمة الإيمان بالله
MajdyAboRaed كتب:ماذا يقصد بالسطر التالي :ViewState.item("__Data")=dataset
بالنسبة لي فانا اعتبر تخزين الداتا ست في ViewState من أسوأ طرق الاحتفاظ بها.
فذلك سيسبب بطأ كبيرا في الصفحة لان الداتا ست سوف ترسل من السرفر الى المتصفح وبالعكس بعد كل مرة ينقر فيها المستخدم زرا او يختار خيار ما أي مع كل PostBack. والبطء (لقد نسيت قواعد العربية بعد كل هذه الفترة. هل تكتب بطء ام بطئ ؟؟
) سيكون واضحا في حالة 100 سجل مثلا في الجدول الواحد (كمان أن هذه الطريقة ترسل للمستخدم كل الجداول الموجودة في الداتا ست حتى ان كان المستخدم ليس بحاجتها.
طريقة افضل هي تخزين الداتا ست في ال Cache أو Application اذا كانت عامة تستخدم نفسها لكل المستخدمين (لا ينصح باستخدام Application لحفظ الداتا ست اذا كانت كبيرة في الحجم) وفي حالة كون الداتا ست خاصة بكل مستخدم فيمكنك حفظها في Session .
ملاحظة : لست بحاجة لحفظ الداتا ست. تستطيع الحصول عليها كل مرة من قاعدة البيانات. كمان انك تستطيع تعديل السجلات في قاعدة البيانات بدون وجود الداتا ست عن طريق stored procedure او عن طريق تعليمة sql عادية
فعليك استخدام الطريقة المناسبة لحالك فلكل واحد مساوئ وحسنات.
هل تريد توليد صفحات بطيئة في التحميل لكنها تخفف عبئ على السرفر ام تردي صفحات سريعة على حساب ذاكرة السرفر ام تريد صفحات تحضر المعلومات بعد كل PostBack من قاعدة البيانات من جديد ؟
عليك الاختيار
وحدن بيبقو متل زهر البيلسان وحدهن بيقطفو وراق الزمان
بيسكرو الغابي بيضلهن متل الشتي يدقوا على بوابي على بوابي
يا زمان يا عشب داشر فوق هالحيطان ضويت ورد الليل عكتابي
برج الحمام مسور و عالي هج الحمام بقيت لحالي لحالي
يا ناطرين التلج ما عاد بدكن ترجعو صرخ عليهن بالشتي يا ديب بلكي بيسمعو
http://www.mazikana.com/Songs/F/Fayrouz/mp...uz---Wahdon.mp3
في الحقيقة أنا بحثت بحث مطول عن ViewState بعد شرحكم ووجدت أنها True by default وأي كنترول موجود في الصفحة أيضا له خاصية الـViewState وعلى ما أعتقد أنها أيضا TRUE ،ولكن الكود في المثال المرفق سابقا وتحديدا في:
viewstate.item("__Data")=Datasetهل
item("__Data")هو متغير يمكن أن اسميه بأي إسم بدلا عن __Data
أم أنه ثابت لا يتغير وهل الـUnderScore لها دلالة معينة أم لا .
وبحثت أيضا عن Application وال Session وحسبما فهمت أنها تستخدم لأغراض مثل حساب عدد الزوار أو تخصيص إعدادات لكل مستخدم ولا أظن إنني سأستفيد منها في تعديل واضافة وحذف بيانات من قاعدة البيانات ، لا سيما أن البيانات ذات حجم كبير فهل هناك طريقة تقوم بتوزيع الضغط بين ال Clients and Servers ، لأني بصراحة أحترت ما بين ال viewstate وال Apllication وال Session .
أما بالنسبة لل stored procedure فانني اقوم باستخدامها في حالة الاضافة ولكن في حالة التعديل والحذف من الداتا جريد هل بامكاني استخدامها وان كانت هناك طريقة فكلي أمل أن تزودوني بالطريقة .
بالمناسبة قد أخبرني احد الاصدقاء بأن هناك أداة اسمها Repeater وهي أفضل من الداتا جريد ولكنني لم أعرف كيفية استخدامها بتاتا ، آمل منكم الافادة ( بالامثلة إن أمكن ).
وآسف على الإطالة .
أقدر لك بحثك بنفسك وعدم اعتمادك اعتمادا كاملا على الاجوبة في المنتدى وهذا ما يرفع سوية المنتدى بحيث يصبج مجالا للتفاعل المفيد بين المبرمجين.
اقتباسفي الحقيقة أنا بحثت بحث مطول عن ViewState بعد شرحكم ووجدت أنها True by default وأي كنترول موجود في الصفحة أيضا له خاصية الـViewState وعلى ما أعتقد أنها أيضا TRUE
انك هنا تتحدث عن EnableViewState وهي تسمح للكنترول بالحفاظ على قيمتها التي بعد كل PostBack أما ViewState فهو كائن تستطيع لحفظ المعلومات التي تريد الحفاظ عليها بعد كل PostBack. او بمعنى ثاني عندما تعطي EnableViewState قيمة true, وهي قيمتها الافتراضية كما ذكرت, فكانك تقول لهذا الكونترول "تستطيع استخدام الـ ViewState لحفظ ما تريد". والمعنى هنا اننا استخدمنا الـ ViewState للحفاظ على الداتا ست حتى بعد ان ترسل الصفحة الى المستخدم بحيث تستطيع الوصول اليها مرة ثانية في حالة حذف سجل او تعديل او اضافة.
اقتباسهو متغير يمكن أن اسميه بأي إسم بدلا عن __Dataأم أنه ثابت لا يتغير وهل الـUnderScore لها دلالة معينة أم لا .
ابدا ليس لها اي دلالة وتسطيع استخدام ما تريد . فكل ما تحتاجه هنا هو مفتاح key بحيث تستطيع الوصول للمعلومات مرة ثانية.
اقتباسوبحثت أيضا عن Application وال Session وحسبما فهمت أنها تستخدم لأغراض مثل حساب عدد الزوار أو تخصيص إعدادات لكل مستخدم ولا أظن إنني سأستفيد منها في تعديل واضافة وحذف بيانات من قاعدة البيانات
ان غرض الاستفادة منها هنا هو نفس الغرض من استخدام ViewState فقط للحفاظ على الداتا ست بحيث تستطيع الوصول بعد كل PostBack.
اقتباسأما بالنسبة لل stored procedure فانني اقوم باستخدامها في حالة الاضافة ولكن في حالة التعديل والحذف من الداتا جريد هل بامكاني استخدامها وان كانت هناك طريقة فكلي أمل أن تزودوني بالطريقة .
ان ما قصدته في هذه الحالة انك لست مضطرا للحفاظ على الداتا ست من اجل تعديل البيانات في قاعدة البيانات.
عندما يتنفذ الحدث Update او Delete للداتا غريد فان البرامتر الثاني الممرر هو من نوع DataGridCommandEventArgs وتستطيع استدعاء الخاصية Item له للحصول على المعولمات الجديدة التي اضافها او عدلها المستخدم
لمزيد من المعلومات انصحك بمقال يعالج كل جوانب الداتا غريد وكل تعدل البيانات
http://aspnet.4guysfromrolla.com/articles/071002-1.aspx
المقال يتالف من 16 قسما صغيرا لكنه مفيد جدا كما ان كاتبه له عدد من الكتب المشهورة وعدد كبير من المقالات على موقع MSDN .
اقتباسبالمناسبة قد أخبرني احد الاصدقاء بأن هناك أداة اسمها Repeater وهي أفضل من الداتا جريد ولكنني لم أعرف كيفية استخدامها بتاتا ، آمل منكم الافادة ( بالامثلة إن أمكن ).
لمتشل سكوت (كاتب المقال السابق) ايضا مقال على msdn يعالج هذا الموضوع متى تختار ماذا . مهما شرح فلن اكون افضل منه
http://msdn.microsoft.com/library/default....webcontrols.asp
اقتباسهل هناك طريقة تقوم بتوزيع الضغط بين ال Clients and Servers ، لأني بصراحة أحترت ما بين ال viewstate وال Apllication وال Session .
كما قلت لك لا يوجد حل مثالي لكل الاحوال. عليك ان تختار من الطرق السابقة ما يناسبك. بالنسبة لي فانا اعتقد ان عدم تخزين الداتا ست واستخدام الطريقة الاخير هو الافضل.
وحدن بيبقو متل زهر البيلسان وحدهن بيقطفو وراق الزمان
بيسكرو الغابي بيضلهن متل الشتي يدقوا على بوابي على بوابي
يا زمان يا عشب داشر فوق هالحيطان ضويت ورد الليل عكتابي
برج الحمام مسور و عالي هج الحمام بقيت لحالي لحالي
يا ناطرين التلج ما عاد بدكن ترجعو صرخ عليهن بالشتي يا ديب بلكي بيسمعو
http://www.mazikana.com/Songs/F/Fayrouz/mp...uz---Wahdon.mp3
الله يعطيكم العافية ياشباب .
أنجزت جزء مهم من البرنامج ، وعملت الحذف والتعديل عن طريق :
اقتباسDataGridCommandEventArgs
كما ذكر الاخ DotNetExpert ، ولكن عجزت عن عمل اضافة حقل جديد في الداتا قريد ، فهل هناك طريقة اضيف بها سجل جديد عن طريق :
اقتباسDataGridCommandEventArgs
وكل عام وانتم بخير
هذا الموضوع مغلق.