نمایش نتایج 1 تا 9 از 9

نام تاپیک: نکته: نمایش GridView در صورت خالی بودن Data Source آن

  1. #1

    Thumbs up نکته: نمایش GridView در صورت خالی بودن Data Source آن

    نکته ای که در رابطه با GridView وجود داره این هست که اگر DataSource منتسب شده به GridView هیچ رکوردی را شامل نشود، GridView نمایش داده نمی شود!
    به نظر منطقی میرسه. به عنوان مثال، اگر GridView شما قابلیت های حذف و ویرایش درجا را داشته باشد، این قابلیت ها بدون وجود رکورد معنا نخواهند داشت!
    برای رفع این مشکل، GridView مفهوم جدیدی با نام "EmptyDataTemplate" ارائه کرده است که در صورت خالی بودن DataSource از رکورد، قالبی که در این تگ تعریف می شود به جای قالب اصلی GridView نمایش داده خواهد شد.
    مسلما تنها قابلیتی که در صورت نبود رکورد معنا پیدا می کند، "اضافه کردن رکورد" است.
    بهترین روش، ایجاد یک تگ Table، تعریف Header برای Table و یک ردیف برای قرار دادن Button، TextBox و ... است.
    به خاصیت CommandName کنترل Button نامی دلخواه را نسبت دهید. این نام را در روال RowCommand کنترل GridView بازیابی می کنیم.

    تگ EmptyDataTemplate را پس از تگ Columns بنویسید.

    <EmptyDataTemplate>
    <table>
    <tr>
    <td>Name</td>
    <td>Family</td>
    </tr>
    <tr>
    <td><asp:TextBox ID="txtName" runat="server"></asp:TextBox></td>
    <td><asp:TextBox ID="txtFamily" runat="server"></asp:TextBox></td>
    </tr>
    <tr>
    <td colspan="2"><asp:Button ID="btnEmptyAdd" runat="server" CommandName="EmptyInsert" /></td>
    </tr>
    <table>
    </EmptyDataTemplate>


    Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs ) Handles GridView1.RowCommand
    If e.CommandName = "EmptyInsert" Then
    Dim obj_txtName As TextBox
    obj_txtName = GridView1.Controls(0).Controls(0).FindControl("txt Name")
    Response.Write(obj_txtName.Text)
    End If
    End Sub

    موفق باشید.

  2. #2
    من از این کد شما در برنامم استفاده کردم error میگیره(از قسمت دوم) و درست هم هست وقتی برای بار اول که صفحه لود میشه و grid خالی است و ما آن را نمیبینیم چطور از آن در کد استفاده کردین

  3. #3
    شما احتمالا همین کد رو هلپی! Copy & Paste کردی!
    بر مبنای برنامه ی خودت تنظیم کن.
    کد تاپیک اعمال با GridView رو ببین.

    موفق باشید.

  4. #4
    مرسی درست شد اما مشکل این است که برای همیشه این table جدید را نشان میده حتی بعد از اینکه یک رکورد هم addشد باز هم grid را نشان نمیده همان جدول را نشان میده

  5. #5
    نقل قول نوشته شده توسط nooshin_k مشاهده تاپیک
    مرسی درست شد اما مشکل این است که برای همیشه این table جدید را نشان میده حتی بعد از اینکه یک رکورد هم addشد باز هم grid را نشان نمیده همان جدول را نشان میده

    این مشکل من هم هست لطفا کمک کنید

  6. #6
    کاربر دائمی آواتار رها
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    بندرعباس
    سن
    40
    پست
    264
    بعد از ایجاد رکورد جدید عملیات bind مربوط به گرید رو فراخوانی کنید تا اطلاعاتی که به تازگی وارد شدند نشان داده بشه.

  7. #7
    کاربر دائمی آواتار سار
    تاریخ عضویت
    اسفند 1382
    محل زندگی
    تورین-ایتالیا
    پست
    1,044
    نقل قول نوشته شده توسط Behrouz_Rad مشاهده تاپیک
    نکته ای که در رابطه با GridView وجود داره این هست که اگر DataSource منتسب شده به GridView هیچ رکوردی را شامل نشود، GridView نمایش داده نمی شود!
    به نظر منطقی میرسه. به عنوان مثال، اگر GridView شما قابلیت های حذف و ویرایش درجا را داشته باشد، این قابلیت ها بدون وجود رکورد معنا نخواهند داشت!
    برای رفع این مشکل، GridView مفهوم جدیدی با نام "EmptyDataTemplate" ارائه کرده است که در صورت خالی بودن DataSource از رکورد، قالبی که در این تگ تعریف می شود به جای قالب اصلی GridView نمایش داده خواهد شد.
    مسلما تنها قابلیتی که در صورت نبود رکورد معنا پیدا می کند، "اضافه کردن رکورد" است.
    بهترین روش، ایجاد یک تگ Table، تعریف Header برای Table و یک ردیف برای قرار دادن Button، TextBox و ... است.
    به خاصیت CommandName کنترل Button نامی دلخواه را نسبت دهید. این نام را در روال RowCommand کنترل GridView بازیابی می کنیم.

    تگ EmptyDataTemplate را پس از تگ Columns بنویسید.

    <EmptyDataTemplate>
    <table>
    <tr>
    <td>Name</td>
    <td>Family</td>
    </tr>
    <tr>
    <td><asp:TextBox ID="txtName" runat="server"></asp:TextBox></td>
    <td><asp:TextBox ID="txtFamily" runat="server"></asp:TextBox></td>
    </tr>
    <tr>
    <td colspan="2"><asp:Button ID="btnEmptyAdd" runat="server" CommandName="EmptyInsert" /></td>
    </tr>
    <table>
    </EmptyDataTemplate>


    Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs ) Handles GridView1.RowCommand
    If e.CommandName = "EmptyInsert" Then
    Dim obj_txtName As TextBox
    obj_txtName = GridView1.Controls(0).Controls(0).FindControl("txt Name")
    Response.Write(obj_txtName.Text)
    End If
    End Sub

    موفق باشید.
    من هیچ وقت از دیتا اینتری تو گریدخوشم نیومده ولی بابت نکته جالبی که فرمودید متشکرم

  8. #8
    مشکل اینه که اصلا اطلاعات وارد پایگاه نمی شود تا بعد از بایند چیزی رو نمایش بدهد
    اگه ممکنه اقای راد خودشون به این تاپیک جواب دهند

  9. #9
    با اجازه اساتید .
    شاید این نمونه کمکی بکنه !
    فایل های ضمیمه فایل های ضمیمه

تاپیک های مشابه

  1. مقدار دهی data source اشیا با کد نویسی
    نوشته شده توسط vbiman در بخش برنامه نویسی در 6 VB
    پاسخ: 3
    آخرین پست: جمعه 16 آذر 1386, 23:52 عصر
  2. DATA SOURCE
    نوشته شده توسط abbas.net در بخش VB.NET
    پاسخ: 2
    آخرین پست: جمعه 19 مرداد 1386, 11:29 صبح
  3. خاصیت data source و data field
    نوشته شده توسط seeker در بخش VB.NET
    پاسخ: 6
    آخرین پست: شنبه 28 بهمن 1385, 21:37 عصر
  4. چجوری Data Source را زمان اجرا بدست آورم ؟
    نوشته شده توسط Babak-Aghili در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 2
    آخرین پست: سه شنبه 17 آبان 1384, 10:32 صبح
  5. کمک در مورد خطای invalid data source
    نوشته شده توسط my_yazdani در بخش برنامه نویسی در 6 VB
    پاسخ: 0
    آخرین پست: دوشنبه 29 فروردین 1384, 12:12 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •