PDA

View Full Version : فراخوانی یک تابع از داخل گرید ویو



profnami
دوشنبه 21 تیر 1389, 18:36 عصر
سلام دوستان
من میخواستم یک تابع رو که درون یک کلاس نوشتم فراخوانی کنم . برای تبدیل تاریخ ، تاریخ رو داخل DataBase به صورت میلادی ذخیره میکنم . حالا میخوام اون تاریخ رو داخل گرید ویو به این صورت نمایش بدم .

05:50 ب.ظ ،بیست و یکم تیر يك هزار و سيصد و هشتاد و نه

من یه تابع داخل یه کلاس نوشتم که تاریخ میلادی رو واسم به این صورت در میاره . اما من با استفاده از کدنویسی گرید رو بایند میکنم .
کسی راه حلی سراغ نداره که عمل تبدیل رو چجوری انجام بدیم ؟
من یه بار یه جایی خوندم که میشه از داخل گرید توابع رو فراخوانی کرد . میشه بگید آیا درسته ؟

rana-writes
دوشنبه 21 تیر 1389, 22:42 عصر
سلام
شما چرا از همون اول تاریخ رو با PersianDate به صورت شمسی ذخیره نمی کنین که حالا این مشکل پیش نیاد؟

profnami
سه شنبه 22 تیر 1389, 00:42 صبح
بهترین کار اینه که به صورت میلادی ذخیره بشه بعد موقع لزوم تبدیل بشه .
ره حل؟

svahidm
سه شنبه 22 تیر 1389, 09:17 صبح
سلام
براي اون فيلدي كه مي خوايي تابع رو ازش صدا بزني بجاي BoundField يه TemplateField بذار رو توش مثلا يه label و بنويس :

<asp:Label Text='<%# YourfunctionName( Eval("yourFieldName"))%>'

profnami
سه شنبه 22 تیر 1389, 09:39 صبح
ممنون
بله . اما من تابع رو داخل یه کلاس گذاشتم ، آیا باز هم میشه از این روش استفاده کرد؟

svahidm
سه شنبه 22 تیر 1389, 11:24 صبح
اگه تابع رو استاتيك كنين بله ،وگرنه بايد از event rowdatabind استفاده كنين

Saber_Fatholahi
سه شنبه 22 تیر 1389, 14:34 عصر
و نكته بعدي اينكه يادتون باشه ورودي تابع شما از نوع آبجكت باشه
موفق باشيد

profnami
سه شنبه 22 تیر 1389, 14:40 عصر
آقای فتح الهی ممنون . نکته ی شما خیلی مهم بود . اما باز هم من از درون کلاس به تابع دسترسی ندارم .
من تابع رو داخل کلاس NaMiUtility نوشتم (اسم تابع هم اینه GetDateTime) . وقتی تابع رو تو گرید میزارم عمل نمیکنه .

<asp:Label ID="lblSendDate" runat="server"
Text='<%# GetDateTime(Eval("SendDate")) %>'>
اما وقتی تابع رو داخل خود فایل cs مربوط به صفحه میزارم عمل میکنه .
ممنون

svahidm
چهارشنبه 23 تیر 1389, 10:06 صبح
و نكته بعدي اينكه يادتون باشه ورودي تابع شما از نوع آبجكت باشه
موفق باشيد

سلام
يه نكته اينكه هيچ اجباري نيست كه ورودي تابع از نوع آبجكت باشه و شما ميتونين موقع رد دادن پارامتر اونو به نوع مورد نظرتون تبديل كنين مثلا اگه ورودي تابع از نوع string باشه داريم:

<asp:label Text='<%# YourFunctionName(Eval("YourFiledName").ToString())%>' />
واما اين كه مي گين كار نمي كنه شايد به خاطر اينه كه بايد بطور كامل از اسم namespace براي فراخواني تابع استفاده كنين مثلا:

<asp:label Text='<%# YourNamespace.YourFunctionName(Eval("YourFiledName").ToString())%>' />

rajabpour
پنج شنبه 24 تیر 1389, 01:54 صبح
سلام
يه نكته اينكه هيچ اجباري نيست كه ورودي تابع از نوع آبجكت باشه و شما ميتونين موقع رد دادن پارامتر اونو به نوع مورد نظرتون تبديل كنين مثلا اگه ورودي تابع از نوع string باشه داريم:

<asp:label Text='<%# YourFunctionName(Eval("YourFiledName").ToString())%>' />
واما اين كه مي گين كار نمي كنه شايد به خاطر اينه كه بايد بطور كامل از اسم namespace براي فراخواني تابع استفاده كنين مثلا:

<asp:label Text='<%# YourNamespace.YourFunctionName(Eval("YourFiledName").ToString())%>' />
البته اگه اونو یک بار در ابتدای صفحه Import کنید بهتره....


<%@ Import Namespace="YourNamespace.YourClassName" %>


بعد تابع رو همونطور که دوستان گفتند استفاده کنید