2014-05-06 106 views
1

我有一個Web應用程序,在VB/ASPX中,GridView在我的aspx文件中填充了一個SqlDataSource。就像這樣:GridView和隱藏域

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
     DataSourceID="SqlDataSource1" SkinID="dataGrid" onrowcommand="GridView1_RowCommand"> 
    <Columns> 
     <asp:TemplateField AccessibleHeaderText="id_session" HeaderText="id_session"> 
      <EditItemTemplate> 
       <asp:TextBox ID="txt_id_session" runat="server" Text='<%# Bind("id_session") %>'></asp:TextBox> 
      </EditItemTemplate> 
      <ItemTemplate> 
       <asp:Label ID="lbl_id_session" runat="server" Text='<%# Bind("id_session") %>'></asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 




    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="<%$ ConnectionStrings:Formation_2014ConnectionString %>" 
     SelectCommand="SELECT s.id_session, f.libelle_formation, s.date_debut_session, s.date_fin_session, COUNT(p.id_personne) AS Expr1 FROM Sessions AS s LEFT OUTER JOIN Participe AS p ON p.id_session = s.id_session AND p.actif = 1 RIGHT OUTER JOIN Formation AS f ON f.id_formation = s.id_formation WHERE (s.date_fin_session > GETDATE()) OR (s.date_fin_session < GETDATE()) OR (S.date_fin_session = GETDATE()) GROUP BY s.id_session, f.libelle_formation, s.date_debut_session, s.date_fin_session" > 
    </asp:SqlDataSource> 

這件作品,在這之後我與這個代碼在我隱藏隱藏第一列,「id_session」:

Protected Sub OnRowCreated(ByVal sender As Object, ByVal e As GridViewRowEventArgs) Handles GridView1.RowCreated 
     GridView1.Columns(0).Visible = False 
     'e.Row.Cells(0).Visible = False 'This way delete my paging 
     (Requête) 
    End Sub 

在這之後,我必須得到在我的VB代碼這個隱藏列的值,我嘗試不同的方式,但沒有什麼> <

Dim id_session = GridView1.SelectedRow.Cells(0).Controls(0).ToString 'Return System.Web.UI.Literalcontrol 
Dim id_session = GridView1.SelectedRow.RowIndex 'Return number of line 

對不起,我的英語,我是法國人!

+0

檢查下面的解決方案,爲任何幫助只是讓我知道 – Developerzzz

回答

0

我終於找到了其他的ItemTemplate這種方法:

Dim id_session = (CType(GridView1.SelectedRow.Cells(0).Controls(1), Label)).Text 

它的工作!

0

使用Hiddenfield

試試下面的代碼insted的在firest列

<asp:HiddenField ID="hf_sessionId" runat="server" Value='<%# Bind("id_session") %>' /> 

它不會顯示在用戶界面期運用文本框,你可以很容易地從它 與此代碼訪問值你不需要電網的RowCreated事件

親愛刪除此代碼

  <ItemTemplate> 
      <asp:Label ID="lbl_id_session" runat="server" Text='<%# Bind("id_session") %>'></asp:Label> 
     </ItemTemplate> 

,並把hiddenfield到要顯示

+0

當使用HiddenField,並沒有RowCreated事件,列保持可見! http://image.noelshack.com/fichiers/2014/19/1399361323-sans-titre2.png – Krishnak

+0

親愛的你必須刪除txtbox和鏈接控件表單,然後網格kidly請在隱藏字段後顯示我的代碼 – Developerzzz

+0

' asp:TemplateField AccessibleHeaderText =「id_session」HeaderText =「id_session」> 這是我的代碼現在,我找到了另一種方式繼續,但我想看看如何工作用你的解決方案! – Krishnak

0

而不是「GridView1.Columns(0)。可見=假」改變你這樣的代碼,

GridView1.Columns(0).style("display")="none"