PDA

View Full Version : GridView با استفاده از AJAX



NetBeans
جمعه 02 مرداد 1388, 01:17 صبح
یه GridView می خوام مثل چیزی که گوگل در GMail استفاده کرده. بطور مثال وقتی کاربر تیک چندتا رکورد رو می ذاره
و گزینه Report Spam رو میزنه اون رکورد از Inbox حذف میشه و یه(یا چندتا) رکورد جدید از صفحه بعد به جای این
رکورد میشینه.(یعنی اینکه هیچوقت تعداد رکورد های نشان داده شده مثلا از 50 کمتر نمیشه).
اولا چنین کاری امکان پذیره یا نه؟(چون گوگل و سایرین چنین کاری کردن پس امکان پذیره :لبخند:)
اگه جواب بله است میشه روش کار رو از ابتدا با یه مثال توضیح بدین؟

از توجهتون سپاسگذارم.

bachebahal_1363
جمعه 02 مرداد 1388, 02:10 صبح
ابتدا باید خوش آمد بگم به شما
بله در دنیای اینترنت همه چیز امکان پذیر هست
مخصوصا حالا که بحث AJAX خیلی هم داغ هست
اولا باید با javascript آشنایی کامل داشته باشین
بعد باید طرز کار AJAX رو یاد بگیرین
بعد از اون ساخت کنترل های سمت سرور رو
در آخر هم تلفیق javascript - AJAX - ServerControl
البته کاری که شما می خواین خیلی راحت با چند تکه کد ساده می شه انجام داد
یه مثال می زنم:

ابتدا باید یک checkBox به گرید مورد نظر اضافه کنید که حتما این کار رو بلد هستین
بعد نوشتن کد جاوااسکریپت زیر و سپس call کردن متد مورد نظر با استفاده از __doPostBack


function Del()
{

var grid = document.getElementById('YourGridName');
var strConcat = '';
for(i=0;i<grid.rows.lenght;i++)
{

if(grid.rows[i].cells[YourCheckBoxCellIndex].children[0].checked)
{
strConcat = grid.rows[i].cells[YourGridAccessKey].innerText + ',';
}
}
document.getElementById('YourHiddenFieldToHoldYour AccessKey').value = strConcat ;
__doPostBack('btnDelete','onclick');
}


حالا کافیه در سمت سرور در دکمه مورد نظر (btnDelete) اطلاعات ذخیره شده در hiddenfield مورد نظر رو گرفته و اونها رو از دیتابیس حذف کنید و سپس یک بار گرید خود رو از دیتا Fill کنید

NetBeans
جمعه 02 مرداد 1388, 18:49 عصر
function Del()
{
var HiddenVariable;
var grid = document.getElementById('GridView1');
var strConcat = '';
for(i=0;i<grid.rows.lenght;i++)
{
if(grid.rows[i].cells[0].children[0].checked)
{
strConcat = grid.rows[i].cells[1].innerText + ',';

}
}
document.getElementById('HiddenVariable').value = strConcat ;
__doPostBack('btnDelete','onclick');
}



این هم قسمت code behindهست که البته فکر کنم اشکالات زیادی داره .






this.ClientScript.GetPostBackEventReference(this, "arg");
if (IsPostBack)
{
string eventTarget = this.Request["__EVENTTARGET"];
string eventArgument = this.Request["__EVENTARGUMENT"];
if (eventTarget != String.Empty && eventTarget == "callPostBack")
{
if (eventArgument != String.Empty)
//Delete My Row
}
}
else
{
btnDelete.Attributes.Add("onClick", "SetHiddenVariable();");
}


اگه می شد این کد را دست کاری کرد تا درست بشه ممنون میشم این کارو بکنید ولی اگه نشد خواهشا یه نمونه برنامه ساده بذارید.