2013-02-20 8 views
6

(np ustawić rowcolor oparciu o ukrytej wartości)uzyskać wartości z ukrytych komórek w gridview asp.net C# za pomocą onrowdatabound

jeśli masz GridView, który ukryty komórki jak ten

<asp:GridView ID="Timeevents" runat="server" 
     OnRowDataBound="Timeevents_RowDataBound" 
     OnRowCommand = "Timeevents_RowCommand" 
     AutoGenerateColumns="False"> 
     <columns> 
     <asp:BoundField DataField="CaseID" HeaderText="CaseID" Visible = "False" /> 
     <asp:BoundField DataField="caseworkerID" HeaderText="CwID" Visible = "False" /> 
     <asp:BoundField DataField="EventTypeID" HeaderText="EvTypeID" Visible = "False" /> 
     <asp:BoundField DataField="CaseWorker" HeaderText="Case Worker" /> 
     <asp:BoundField DataField="EventDate" HeaderText="Event Date" /> 
     <asp:BoundField DataField="Code" HeaderText="Code" /> 
     <asp:BoundField DataField="TotalUnits" HeaderText="Total Units" /> 
     <asp:BoundField DataField="EventType" HeaderText="Event Type" /> 
     <asp:BoundField DataField="UnitCost" HeaderText="Unit Cost" /> 
     <asp:BoundField DataField="TotalCost" HeaderText="Total Cost"/> 
     <asp:TemplateField HeaderText="ADD"> 
       <ItemTemplate> 
        <asp:Button ID="AddUnit" runat="server" Text=" +1 " 
        CommandName="AddUnit" 
        CommandArgument='<%# Eval("CaseID")+ ";" + Eval("CaseworkerID")+ ";" + Eval("EventDate")+ ";" + Eval("EventTypeID")+ ";" + ("1")%>'/> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
</asp:GridView> 

następnie go wydaje się niemożliwe, aby uzyskać te wartości w onRowDatabound Handler użyciu (e.Row.Cells [2] .text)

mam wokół tego problemu przez nie ustawienie dowolnego z BoundFields do Visible = „false” więc są widoczne = "true" domyślnie. uzyskanie wartości, które potrzebowałem w module obsługi onRowDatabound w kodzie, a następnie uczynienie ich niewidocznymi później. lubię to.

protected void Timeevents_RowDataBound(object sender, GridViewRowEventArgs e) 
     { 
      if (e.Row.RowType == DataControlRowType.DataRow) 
      { // just for the datarows 
       int a = (int.Parse(e.Row.Cells[2].Text)); 

       if (a % 2 == 0) 
       { 
        e.Row.BackColor = System.Drawing.Color.Gainsboro; 
       } 
       else 
       { 
        e.Row.BackColor = System.Drawing.Color.White; 
       } 
      } 
      // end if so this applies to header and data rows 
      e.Row.Cells[0].Visible = false; 
      e.Row.Cells[1].Visible = false; 
      e.Row.Cells[2].Visible = false; 

     } 

bycia dość zielony zajęło mi sporo googlowania runda wielu forach i debugowania, aby dowiedzieć się, że opiekun nie mogę zobaczyć ukrytych pól z danymi i nie mogłem się znaleźć odpowiedź, w jaki sposób ustawić rowcolour na podstawie ukryte pole, więc chciałem po prostu opublikować to dla innych, aby znaleźć

Jeśli jakikolwiek ekspert zna lepszy lub alternatywny sposób, być może mogliby dodać trochę kodu/komentarzy na zdrowie!

Odpowiedz

4

Myślę, że można użyć DataItem jak mówi here

// the underlying data item is a DataRowView object. 
    DataRowView rowView = (DataRowView)e.Row.DataItem; 

    // Retrieve the EventTypeID value for the current row. 
    int a = Convert.ToInt32(rowView["EventTypeID"]); 
+2

Dzięki V Znacznie Kaf ... i nie było mi do myślenia byłem smarty spodnie czy coś !! – Sonny123

Powiązane problemy