GridView - boş veri kaynağını göster başlıkları

oy
73

C # 'Hala veri kaynağı boş olsa bile, bir GRIDVIEW başlıklarını göstermek nasıl.

hepsi önceden tanımlanmış oldukları gibi oto sütunları üreten değilim.

Şu anda ne yapıyorum şudur.

Daha sonra, geri bir saklı yordam bir DataTable alın GRIDVIEW DataSource ayarlayın ve ardından DataBind call ().

Verileri olduğunda bu çalışıyor, ancak hiçbir satır iade edildiğinde sonra sadece ızgara olması gereken yer boş olsun.

Düzenleme: Teşekkür NET 4+ mülkün tüm. Ben .NET 3.5 gün içinde bu geri istedi. Bu artık çok daha kolay. :)

Oluştur 09/12/2008 saat 22:52
kaynak kullanıcı
Diğer dillerde...                            


16 cevaplar

oy
119

ASP.Net 4.0 boolean katma ShowHeaderWhenEmptyözelliğini.

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.showheaderwhenempty.aspx


<asp:GridView runat="server" ID="GridView1" ShowHeaderWhenEmpty="true" AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField HeaderText="First Name" DataField="FirstName" />
        <asp:BoundField HeaderText="Last Name" DataField="LastName" />
    </Columns>
</asp:GridView>

Not: başlıklar boş haricindeki başka bir adı verilir () DataBind sürece görünmez.

GridView1.DataSource = New List(Of String)
GridView1.DataBind()
Cevap 17/02/2011 saat 20:13
kaynak kullanıcı

oy
30

Bu gönderdikten sonra ben çalışan bir yol ile geldi. Ancak, ben bu işlemek için en iyi yoldur hissetmiyorum. Daha iyi bir biri üzerinde herhangi bir öneriniz?

//Check to see if we get rows back, if we do just bind.

if (dtFunding.Rows.Count != 0)
{
    grdFunding.DataSource = dtFunding;
    grdFunding.DataBind();
}
else
{
  //Other wise add a emtpy "New Row" to the datatable and then hide it after binding.

     dtFunding.Rows.Add(dtFunding.NewRow());
     grdFunding.DataSource = dtFunding;
     grdFunding.DataBind();
     grdFunding.Rows[0].Visible = false;
}
Cevap 09/12/2008 saat 22:59
kaynak kullanıcı

oy
5

Sadece bu sorunun içinden çalışıyordu ve bu çözümlerin hiçbiri benim için çalışacak. Ben kullanamadı EmptyDataTemplatebenim oluştururken çünkü mülkiyet GridViewbaşlıklarında filtreleri sağlayan özel alanlar dinamik olarak. Ben kullanıyorum çünkü almny yayınlanmıştır örnek kullanamadı ObjectDataSourceyerine lar DataSetya DataTable. Ancak, ben buldum bu cevabı bağlanan başka bir StackOverflow soru yayınlanan bu zarif çözümü benim özel durum için çalışma yapmak başardı. Bu geçersiz kılma içerir CreateChildControlsyöntemini GridViewgerçek veri olmuştu yaratılmış olurdu aynı başlık satırını oluşturun. Bunun bir benzeri düzeltme diğer insanlar tarafından bulunmasını olasılığı nerede buna değer, burada gönderme düşündüm.

Cevap 14/07/2009 saat 22:05
kaynak kullanıcı

oy
3

set "<asp:GridView AutoGenerateColumns="false" ShowHeaderWhenEmpty="true""

showheaderwhenEmpty özellik

Cevap 20/12/2012 saat 12:21
kaynak kullanıcı

oy
3

Eğer ASP.NET 3.5 ve daha düşük olan çalışıyoruz ve senin sorunun benim gibi nispeten basittir, sadece SQL sorgusu boş satır döndürebilir.

if not exists (select RepId, startdate,enddate from RepTable where RepID= 10)
     select null RepID,null StartDate,null EndDate
else
     select RepId, startdate,enddate from RepTable where RepID= 10

Bu çözüm herhangi bir C # kodu veya ASP.NET kod gerektirmez

  1. aksi takdirde çalışmaz, uygun adlar içine boş sütunlar dökme emin olun.
  2. Else bloğu ile aynı sorgu olan eklenmelidir if not exists (query part)
  3. Benim durumumda yerine GRIDVIEW dışında DropDownList kutusunun eşleştirilmiş 10'un @RepID kullanıyorum eğer.

Ben başka bir temsilci seçmek için damla aşağı değiştirmek her zaman, Gridview güncellenir. hiçbir kayıt bulunursa, o boş satır gösterir.

Cevap 10/07/2012 saat 16:28
kaynak kullanıcı

oy
2

Sen programlama kurulum için başını HeaderTemplate özelliğini kullanın veya .NET 3.5 kullanıyorsanız yerine eğer ListView kullanabilirsiniz.

Şahsen, GridView'da üzerinde ListView tercih ve DetailsView mümkünse, bu size html'nizin üzerinde daha fazla kontrol sağlar.

Cevap 09/12/2008 saat 23:07
kaynak kullanıcı

oy
1

Sen true ownertableview ait ShowHeadersWhenNoRecords özelliğini ayarlayabilirsiniz. aspx:

<asp:GridView ID="RadGrid2" runat="server" >       
<MasterTableView ShowHeadersWhenNoRecords="true"  > 

(Hiçbir kayıt olduğunda), bunu ayarı deneyebilirsiniz GridView veri kaynağı null Ayrıca aşağıda gösterildiği gibi: c #:

  if (GridView1.DataSource == null)  
  {  
        GridView1.DataSource = new string[] { };  
  } 
  GridView1.DataBind();
Cevap 29/06/2016 saat 10:24
kaynak kullanıcı

oy
1

Juste ShowHeaderWhenEmpty özellik eklemek ve gerçek ayarlıyorum

Bu çözüm benim için çalışıyor

Cevap 27/02/2015 saat 15:23
kaynak kullanıcı

oy
1
<asp:GridView ID="grdGroup"  EmptyDataText="No Records Found" ShowHeaderWhenEmpty="True" runat="server">

Bu EmptyDataText ve ShowHeaderWhenEmpty ile Gridview temel bir örneğidir

Cevap 06/09/2013 saat 09:31
kaynak kullanıcı

oy
1

Ben sorunun çok basit bir çözüm buldu. Sadece iki gridviews yarattı. İlk GridView hiçbir satırları döndürmek için tasarlanmış bir sorgu ile DataSource aradı. Bu sadece aşağıdaki içeriyordu:

    <Columns>
        <asp:TemplateField HeaderStyle-HorizontalAlign="Left">
            <HeaderTemplate>

               <asp:Label ID="lbl0" etc.>  </asp:Label>
               <asp:Label ID="lbl1" etc.>  </asp:Label>

            </HeaderTemplate>
        </asp:TemplateField>
    </Columns>

Sonra aşağıdaki özelliklere sahip bir div yarattı ve bunun içinde bir GridView koyun ile ShowHeader = üst satır tüm diğer satırlar aynı boyutta olacak şekilde "yanlış".

<div style="overflow: auto; height: 29.5em; width: 100%">
    <asp:GridView ID="Rollup" runat="server" ShowHeader="false" DataSourceID="ObjectDataSource">
        <Columns>
            <asp:TemplateField HeaderStyle-HorizontalAlign="Left">
                <ItemTemplate>

               <asp:Label ID="lbl0" etc.>  </asp:Label>
               <asp:Label ID="lbl1" etc.>  </asp:Label>

                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
</div>
Cevap 13/06/2012 saat 18:53
kaynak kullanıcı

oy
1

senin ızgara-görünümüne bu özelliği ekleyin: ShowHeaderWhenEmpty = "True" sadece kontrol yardımcı olabilir

Cevap 18/04/2012 saat 14:25
kaynak kullanıcı

oy
0

Ben asp SQLDataSource kullanıyordum. Ben aşağıdaki gibi false CancelSelectOnNullParameter ayarladığınızda Benim için çalıştı:

<asp:SqlDataSource ID="SqlData1" runat="server" ConnectionString="" SelectCommand="myStoredProcedure" SelectCommandType="StoredProcedure" CancelSelectOnNullParameter="False"> </asp:SqlDataSource>

Cevap 24/01/2018 saat 17:32
kaynak kullanıcı

oy
-1
    <asp:GridView ID="gvEmployee" runat="server"    
                     AutoGenerateColumns="False" ShowHeaderWhenEmpty=”True”>  
                        <Columns>  
                            <asp:BoundField DataField="Id" HeaderText="Id" />  
                            <asp:BoundField DataField="Name" HeaderText="Name" />  
                            <asp:BoundField DataField="Designation" HeaderText="Designation" />  
                            <asp:BoundField DataField="Salary" HeaderText="Salary"  />  
                        </Columns>  
                        <EmptyDataTemplate>No Record Available</EmptyDataTemplate>  
                    </asp:GridView>  


    in CS Page

    gvEmployee.DataSource = dt;  
    gvEmployee.DataBind();  

Help.. see that link:
http://www.c-sharpcorner.com/UploadFile/d0e913/how-to-display-the-empty-gridview-in-case-of-no-records-in-d/
Cevap 08/07/2015 saat 08:47
kaynak kullanıcı

oy
-1
<asp:GridView ID="gvEmployee" runat="server"    
                 AutoGenerateColumns="False" ShowHeaderWhenEmpty=”True”>  
                    <Columns>  
                        <asp:BoundField DataField="Id" HeaderText="Id" />  
                        <asp:BoundField DataField="Name" HeaderText="Name" />  
                        <asp:BoundField DataField="Designation" HeaderText="Designation" />  
                        <asp:BoundField DataField="Salary" HeaderText="Salary"  />  
                    </Columns>  
                    <EmptyDataTemplate>No Record Available</EmptyDataTemplate>  
                </asp:GridView>  


in CS Page

gvEmployee.DataSource = dt;  
gvEmployee.DataBind();  
Cevap 08/07/2015 saat 08:43
kaynak kullanıcı

oy
-1

Sen kullanabilir EmptyDataTextaşağıda gösterildiği gibi:

<asp:GridView ID="_gridView" RunAt="server" AutoGenerateColumns="false"
          EmptyDataText="No entries found.">

O mesajınızı vermektedir, başlıklarını göstermez "bulunamadı girişleri." yerine.

Cevap 21/09/2012 saat 18:40
kaynak kullanıcı

oy
-3

Aşağıdaki gibi bir EmptyDataTemplate kullanın. DataSource kayıt yok olduğunda, size başlıklarıyla ızgara ve EmptyDataTemplate etiketleri içindeyken değişmez metin veya HTML göreceksiniz.

<asp:GridView ID="gvResults" AutoGenerateColumns="False" HeaderStyle-CssClass="tableheader" runat="server">
    <EmptyDataTemplate>
        <asp:Label ID="lblEmptySearch" runat="server">No Results Found</asp:Label>
    </EmptyDataTemplate>
    <Columns>
        <asp:BoundField DataField="ItemId" HeaderText="ID" />
        <asp:BoundField DataField="Description" HeaderText="Description" />
        ...
    </Columns>
</asp:GridView>
Cevap 09/12/2008 saat 23:34
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more