2016-03-24 32 views
1

GridView'ımda bir HiddenField var. Çok küçük bir boş sütun açılır, boş sütundan nasıl kurtulabilirim? İşte GridView içinde Hiddenfield kullanırken boş sütun gösterir GridView

<asp:GridView ID="GridView1" autogeneratecolumns="false" runat="server" 
     OnSelectedIndexChanged="GridView1_SelectedIndexChanged" 
     autogenerateSelectButton="true"> 
     <Columns>           
      <asp:BoundField datafield ="Song" headertext="Song"/>     
      <asp:BoundField datafield ="Album" headertext="Album"/> 
      <asp:BoundField datafield ="Artist" headertext="Artist"/> 
      <asp:BoundField datafield ="Genre" headertext="Genre"/> 
      <asp:BoundField datafield ="Price" headertext="Price"/> 
      <asp:BoundField datafield ="Explicit Lyrics" headertext="Explicit Lyrics"/> 
      <asp:TemplateField>      
      <ItemTemplate> 
       <asp:HiddenField ID="HiddenField" runat="server" Value='<%# Eval("SongID")%>'/> 
      </ItemTemplate> 
      </asp:TemplateField>        
     </Columns> 
    </asp:GridView> 

çıkış

enter image description here olduğunu

+0

o zaman DatakeyName kullanabilirsiniz VEYA edebilirsiniz. –

cevap

0

TemplateField, GridView öğesinde, veriye bağlı bir denetimde özel içeriği görüntüleyen bir alanı ve görüntülenmeyen bir değeri depolamak için kullanılan HiddenField öğesini temsil etmesi amaçlanmıştır.

Görünmeyen bir değere sahip özel bir içerik sütunu oluşturuyorsunuz. Bu, Ön uç için temsil edilen görünüm olarak null olan bir sütun oluşturmaya neden oluyor. Eğer GridView seçilen endeks değişikliği değerini alıp istiyorsanız Öyleyse ardından yöntemleri kullanabilir:

Method1: Kullanım DataKey grideview size selecetedIndexchanged yönteminde istediğiniz DataColumn saklamak için: erişmek için

<asp:GridView ID="GridView1" autogeneratecolumns="false" runat="server" 
     OnSelectedIndexChanged="GridView1_SelectedIndexChanged" 
     autogenerateSelectButton="true" DataKeyNames="SongID"> 
     <Columns>           
      <asp:BoundField datafield ="Song" headertext="Song"/>     
      <asp:BoundField datafield ="Album" headertext="Album"/> 
      <asp:BoundField datafield ="Artist" headertext="Artist"/> 
      <asp:BoundField datafield ="Genre" headertext="Genre"/> 
      <asp:BoundField datafield ="Price" headertext="Price"/> 
      <asp:BoundField datafield ="Explicit Lyrics" headertext="Explicit Lyrics"/>       
     </Columns> 
    </asp:GridView> 

Selectedındexchanged Yöntem o tuşu:

int songId= Convert.ToInt32(GridView1.DataKeys[GridView1.SelectedIndex].Values); 

Method2: bunun için değil özel bir kimse GRIDVIEW sahip herhangi bir sütun içinde HiddenField ekleyin. Eğer SongID yani kimliğini isterseniz hala metin ve şablonu alanını Başlık 'ın dispaly hiçbiri Column.Apply CSS HiddenField istiyorsanız

<asp:GridView ID="GridView1" autogeneratecolumns="false" runat="server" 
     OnSelectedIndexChanged="GridView1_SelectedIndexChanged" 
     autogenerateSelectButton="true"> 
     <Columns>           
      <asp:BoundField datafield ="Song" headertext="Song"/>     
      <asp:BoundField datafield ="Album" headertext="Album"/> 
      <asp:BoundField datafield ="Artist" headertext="Artist"/> 
      <asp:BoundField datafield ="Genre" headertext="Genre"/> 
      <asp:BoundField datafield ="Price" headertext="Price"/> 
      <asp:TemplateField headertext="Explicit Lyrics" >      
      <ItemTemplate> 
       <asp:Lable runat="server" ID="lblexp" Text='<%# Eval("Explicit Lyrics")%>'> 
       <asp:HiddenField ID="HiddenField" runat="server" Value='<%# Eval("SongID")%>'/> 
      </ItemTemplate> 
      </asp:TemplateField>        
     </Columns> 
    </asp:GridView> 
+0

Yöntem 2 mükemmel çalıştı, Teşekkürler! – stvnmil

+0

hoşgeldiniz. method1 ile ilgili herhangi bir sorun veya hata var mı? –

+0

Çalışması için yöntem 1'i alamadım. Sonunda Değerleri Değeri değiştirerek benim için çalışmaya başlayabildim. Tekrar teşekkürler – stvnmil

0

Bu ekleyebilirsiniz:

<style> 
.hidden {display:none;} 
</style> 

Ve asp:HiddenField veya ItemTemplate elemana bu özellikleri ekleyerek ItemStyle-CssClass="hidden" ve HeaderStyle-CssClass="hidden izin :) ben biliyorum eğer işe yaradıysa. Ne ekledi düşünüyorum

<asp:TemplateField ItemStyle-Width="0" HeaderStyle-Width="0" ... > 
+0

Bu bir tahmin mi? – stuartd

+0

Evet, şimdi test edemiyorum. –

0

daha sonra kimliği almak için bu gizli alan. Sütuna ekleme ve gizlemeye gerek yok. datakey kullanın.

1

: Hâlâ sütun sıfıra genişliğini ayarlayabilirsiniz görürseniz

<asp:GridView CellPadding="0" CellSpacing="0" ... > 

: sıfır olarak GridView cellpadding ve CellSpacing özelliklerini ayarlayabilirsiniz