PDA

View Full Version : رویداد کلیک برای هر سطر از gridview



fatemeh rahimi
شنبه 08 دی 1386, 09:36 صبح
سلام.من چطور می تونم برای هر سطر از gridام ،یه رویداد کلیک داشته باشم؟باید خودم تعریف کنم؟می خوام با کلیک روی هر سطر از grid،اطلاعات کاملی از سطر انتخابی تو یه فرم دیگه نمایش داده بشه.
یه سوال دیگه :اگه بخوام با کلیک بر روی یه سطر اون سطر انتخاب بشه و بعد کدهای مربوط به اونو بنویسم ،چیکار باید بکنم؟

shahab_ksh
شنبه 08 دی 1386, 10:40 صبح
سلام.من چطور می تونم برای هر سطر از gridام ،یه رویداد کلیک داشته باشم؟باید خودم تعریف کنم؟می خوام با کلیک روی هر سطر از grid،اطلاعات کاملی از سطر انتخابی تو یه فرم دیگه نمایش داده بشه.
ابتدا در بخش asp:gridview فیلد کلید رو مشخص می کنید


DataKeyNames="fld_id"

یه ButtonField به گرید ویو اضافه کنید و بعد به اون یه CommandName اضافه کنید



<asp:ButtonFieldButtonType="Image"CausesValidation="True"CommandName="my_command"ImageUrl="gridview_delete.gif">
<ItemStyleWidth="5px"/>
</asp:ButtonField>



در بخش کد در رویداد GridView1_RowCommand
برای دسترسی به command name انتخابی و نهایتا بدست آوردن مقدار فیلد کلید از دستور زیر استفاده کنید



If e.CommandName = "my_command"Then
Me.GridView1.DataKeys(CInt(e.CommandArgument)).Ite m(0) + 0 مقدار کلید
end if




یه سوال دیگه :اگه بخوام با کلیک بر روی یه سطر اون سطر انتخاب بشه و بعد کدهای مربوط به اونو بنویسم ،چیکار باید بکنم؟


از خاصیت select گرید ویو استفاده کنید

abolfazl585
شنبه 08 دی 1386, 11:06 صبح
با تایید فرمایشات شهاب خان، باید بگم که یه راه ساده ترش اینه که شما یک ستون برای انتخاب برای گریدتون اضافه کنید. و با استفاده از کدهای بالا DataKey های خودتون رو تعیین کنید و تو کدهاتون بنویسید:


protected void DridView1_OnSelectedIndexChanged(object sender, EventArg e)
{
string id = GridView1.SelectedDataKey["field_id"].ToString();
}


ضمنا دات نت خودش زحمت انتخاب سطر گریدویو را میکشد، شما فقط کافیست که خاصیت SelectedRowStyle را تعیین کنید :

<SelectedRowStyle CssClass="gridSelected" />


موفق باشید

fatemeh rahimi
شنبه 08 دی 1386, 13:39 عصر
یه ButtonField به گرید ویو اضافه کنید و بعد به اون یه CommandName اضافه کنید
فرمایش شما متین،ولی من نمی خوام از button استفاده کنم،به همین دلیل هم به مشکل بر خوردم و سوال کردم. من نمی خوام داخل gride از هیچ buttonای استفاده کنم.

abolfazl585
شنبه 08 دی 1386, 13:48 عصر
چاره ای نداری جز استفاده از باتن یا لینک باتن ویا چک باکس.
باید یه جوری ردیف رو انتخاب کنی یا نه؟

kavehYn
شنبه 08 دی 1386, 20:58 عصر
سلام
خیلی از توضیحات جامع شما متشکرم . فقط من یک سئوال برام پیش آمده . اگر از
autogenerateselectbutton=true استفاده کنیم مشکل ایشان حل نمیشه ؟

mahdi_farhani
شنبه 08 دی 1386, 22:41 عصر
یه کار دیگه هم میتونی بکونی اونم اینه که در موقع ایجاد سطر به هر سطرت یه ID بدی مثل همون کاری که آقای راد برای OnMouseMove میکنه ولی شما اینبار روی OnClick میزارید و یه تابع کلاینتی رو اجرا میکنه ، که این تابع کلاینتی میاد و یه تابع سروری را برای شما اجرا میکنه .
این توضیح کلیش بود ، دیگه کدش با خودت .

fatemeh rahimi
یک شنبه 09 دی 1386, 08:24 صبح
با تشکر از راهنماییتون.

یه کار دیگه هم میتونی بکونی اونم اینه که در موقع ایجاد سطر به هر سطرت یه ID بدی مثل همون کاری که آقای راد برای OnMouseMove میکنه ولی شما اینبار روی OnClick میزارید و یه تابع کلاینتی رو اجرا میکنه ، که این تابع کلاینتی میاد و یه تابع سروری را برای شما اجرا میکنه .

میشه یه کم در موردش بیشتر توضیح بدید؟یعنی مثلا اگه 100 تا سطر دارم،100 تا id بدم؟(مثلابه وسیله تابع random )

mahdi_farhani
یک شنبه 09 دی 1386, 14:45 عصر
نه احتیاج به تابع Random ندارید ، داخل هر صفحه از گرید شما n سطر دارید پس id شما به این شکل تشکیل میشه MyRow_1 ، MyRow_2, ...., MyRow_n
اینو باید در رویدار RowCreated بزارید و برای اجاد هر سطر Id رو بش بدید ، اگر به گرید های آقای راد یه نگاهی بندازید متوجه میشید .

fatemeh rahimi
یک شنبه 09 دی 1386, 15:47 عصر
خیلی از راهنماییتون ممنون،فکر میکنم تا حدی متوجه شدم چیکار باید بکنم.

mehrdad201
یک شنبه 09 دی 1386, 15:53 عصر
دوستمون جناب فرهادی درست میفرمایند

باید با جاوا اسکریپت روی on click سطر مربوطه (TR منظورمه نه TD) رویداد (event) بذاری

بعد که کلیک شد از طریق clientcallback یا وب سرویس آی دی سطر (که میتونه فیلد کلید سطر دیتابیس باشه) رو به تابع مورد نظرت ارسال کنی و عملیات رو انجام بدی