نمایش پیام در Grid View در زمان عدم محتوا

در این مقاله میخواهیم زمانی که رکوردی در جدول در پایگاه داده وجود ندارد پیامی در گرید ویو نشان دهیم

نمایش  پیام در Grid View در زمان عدم محتوا

نمایش  پیام در Grid View در زمان عدم محتوا

ابتدا یک جدول در پایگاه داده به شکل زیر میسازیم :

کاربرد این روش زمانی می باشد که شما درخواستی به  پایگاه داده خود میزنید ولی اطلاعاتی مطابق با درخواست شما برای نمایش وجود ندارد در اینجا نیاز به نمایش یک پیام مناسب برای اطلاع رسانی به کاربر دارید که اطلاعاتی برای نمایش وجود ندارد راه های مختلفی وجود دارد که در این مقاله یکی از این روش ها را بررسی خواهیم کرد:

یک مثال ساده طبق جدول بالا برای روشن شدن مفهوم میزنم فرض کنید که ما نیاز به پیدا کردن لیست کارکنانی داریم که حقوقشان کمتر از 1000000 می باشد اگر به جدول بالا نگاه کنید مشاهده خواهید کرد که هیچ کارمندی از این مقدار کمتر حقوق نمیگیرد پس پرس و جوی ما نتیجه ای در بر نخواهد نداشت و اطلاعاتی برای نمایش وجود ندارد در اینصورت ما باید یک گرید ویو خالی با یک پیام که داده ای برای نمایش وجود ندارد نشان دهیم برای انجام اینکار باید خصوصیت ShowHeaderWhenEmpty گرید ویو خود را به مقدار true تنظیم کنیم همچنین نیاز به اضافه کردن  خصوصیت <EmptyDataTemplate></EmptyDataTemplate> درون گرید خود برای نمایش پیام داریم.

باتوجه به توضیحات بالا  صفحه aspx. خود را به شکل زیر ویرایش کنید:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="EmployeeDetails.aspx.cs" Inherits="GridView.EmployeeDetails" %>  
    <!DOCTYPE html>  
    <html  
        xmlns="http://www.w3.org/1999/xhtml">  
        <head runat="server">  
            <title>جزئیات کارمندان</title>  
        </head>  
        <body>  
            <form id="form1" runat="server">  
                <div>  
                    <h3>جزئیات کارمندان</h3>  
                    <asp:GridView ID="gvEmployee" runat="server"    
                     AutoGenerateColumns="False" ShowHeaderWhenEmpty=”True”>  
                        <Columns>  
                            <asp:BoundField DataField="Id" HeaderText="شماره پرسنلی" />  
                            <asp:BoundField DataField="Name" HeaderText="نام و نام خانوادگی" />  
                            <asp:BoundField DataField="Designation" HeaderText="سمت" />  
                            <asp:BoundField DataField="Salary" HeaderText="حقوق"  />  
                        </Columns>  
                        <EmptyDataTemplate>اطلاعاتی برای نمایش وجود ندارد</EmptyDataTemplate>  
                    </asp:GridView>  
                </div>  
            </form>  
        </body>  
    </html>  

حال در رویداد page_load صفحه aspx.cs. باید اطلاعات را همراه با شرط ذکر شده در بالا از پایگاه داده خود فراخوانی کنیم:

    using System;  
    using System.Collections.Generic;  
    using System.Configuration;  
    using System.Data.SqlClient;  
    using System.Linq;  
    using System.Web;  
    using System.Web.UI;  
    using System.Web.UI.WebControls;  
      
    namespace GridView   
    {  
        public partial class EmployeeDetails: System.Web.UI.Page   
        {  
            protected void Page_Load(object sender, EventArgs e)   
            {  
                string connect = ConfigurationManager.ConnectionStrings["SQLConnect"].ConnectionString;  
                using(SqlConnection con = new SqlConnection(connect))   
                {  
                    var query = "SELECT * from Employees where Salary < 1000000";  
                    SqlCommand cmd = new SqlCommand(query, con);  
                    con.Open();  
                    SqlDataReader dr = cmd.ExecuteReader();  
                    if (dr.hasRows)   
                    {  
                        gvEmployee.DataSource = dr;  
                        gvEmployee.DataBind();  
                    }   
                    else   
                    {  
                        //Empty DataTable to execute the “else-condition”  
                        DataTable dt = new Datatable();  
                        gvEmployee.DataSource = dt;  
                        gvEmployee.DataBind();  
                    }  
                }  
            }  
        }  
    }  

 

لازم به ذکر است که در حال حاضر کد ADO.Net در این مقاله بهینه سازی نیست و فقط برای نسخه ی نمایشی استفاده می شود. در پروژه های واقعی، Stored Procedure ها وتکنولوژی های دیگر مانند linq باید برای پرس و جو استفاده می شود خروجی برنامه به شکل زیر خواهد شد:

فایل های ضمیمه