2013-05-03 96 views
0

如何將數據綁定到itemtemplategridviewRowDataBound事件。我正在使用gridview,下面是該網格視圖的代碼。檢查列和綁定網格是否存在

<asp:GridView ID="gvCoreUtilization" runat="server" BackColor="White" BorderColor="#cEcFcE" 
        BorderStyle="Solid" BorderWidth="1px" CellPadding="4" ForeColor="Black" OnRowCreated="grdPivot3_RowCreated" 
        AutoGenerateColumns="false" OnRowDataBound="grdCoreUtilization_RowDataBound"> 
        <RowStyle BackColor="#F7F7DE" /> 
        <FooterStyle BackColor="#CCCC99" /> 
        <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" /> 
        <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" /> 
        <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" HorizontalAlign="Left" /> 
        <AlternatingRowStyle BackColor="White" /> 
        <Columns> 
         <asp:TemplateField> 
          <ItemTemplate> 
           <asp:Label ID="lblRoleID" Text='<%#Eval("RoleId") %>' runat="server" Visible="false"></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField> 
          <HeaderTemplate> 
           SupervisorName 
          </HeaderTemplate> 
          <ItemTemplate> 
           <asp:Label ID="lblSupervisorName" Text='<%#Eval("SupervisorName") %>' runat="server"></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField> 
          <HeaderTemplate> 
           UserECode 
          </HeaderTemplate> 
          <ItemTemplate> 
           <asp:Label ID="lblUserECode" Text='<%#Eval("UserECode") %>' runat="server"></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField> 
          <HeaderTemplate> 
           UserName 
          </HeaderTemplate> 
          <ItemTemplate> 
           <asp:Label ID="lblUserName" Text='<%#Eval("UserName") %>' runat="server"></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField> 
          <HeaderTemplate> 
           Designation 
          </HeaderTemplate> 
          <ItemTemplate> 
           <asp:Label ID="lblDesignation" Text='<%#Eval("Designation") %>' runat="server"></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField> 
          <HeaderTemplate> 
           L & D Training% 
          </HeaderTemplate> 
          <ItemTemplate> 
           <asp:Label ID="lblLDTraining" Text='<%#Eval("L & D Training%") %>' runat="server"></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField> 
          <HeaderTemplate> 
           Non Production% 
          </HeaderTemplate> 
          <ItemTemplate> 
           <asp:Label ID="lblNonProduction" Text='<%#Eval("Non Production%") %>' runat="server"></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField> 
          <HeaderTemplate> 
           Process Support% 
          </HeaderTemplate> 
          <ItemTemplate> 
           <asp:Label ID="lblProcessSupport" Text='<%#Eval("Process Support%") %>' runat="server"></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField> 
          <HeaderTemplate> 
           Process Training% 
          </HeaderTemplate> 
          <ItemTemplate> 
           <asp:Label ID="lblProcessTraining" Text='<%#Eval("Process Training%") %>' runat="server"></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField> 
          <HeaderTemplate> 
           Production% 
          </HeaderTemplate> 
          <ItemTemplate> 
           <asp:Label ID="lblProduction" Text='<%#Eval("Production%") %>' runat="server"></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField> 
          <HeaderTemplate> 
           System Downtime% 
          </HeaderTemplate> 
          <ItemTemplate> 
           <asp:Label ID="lblSystemDowntime" Text='<%#Eval("System Downtime%") %>' runat="server"></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField> 
          <HeaderTemplate> 
           Grand Total% 
          </HeaderTemplate> 
          <ItemTemplate> 
           <asp:Label ID="lblGrandTotal" Text='<%#Eval("Grand Total%") %>' runat="server"></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
        </Columns> 
       </asp:GridView> 

在這裏,我想刪除EVAl的數據綁定到itemtemplate。作爲代替我想查天氣

  1. 如果這是在GridView中提到的dataset/Datatable或不存在的所有列。
  2. 如果所有列都存在,則將該列綁定到適當的Itemtemplate。
  3. 如果所有列都不存在,則僅顯示和綁定可用列並隱藏不可用列。

查詢中使用: -

Select RoleId,SuperVisorName,Userecode,Username,Designation,TimeSpent,ActivityName 
           from CoreUtilizationForRole1 where roleid=3 

執行上述查詢後,我是從C#做在活動柱的樞軸和這些列是 「L & d訓練%」, 「非生產%」 ,「流程支持%」,「流程培訓%」,「生產%」,「系統停機時間%」,「總計總額百分比」,我綁定在ItemTemplate上。

+0

你能也在這裏您目前添加查詢使用這裏。 – Sunny 2013-05-03 09:28:05

回答

0
if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      System.Web.UI.WebControls.Label lblRoleNo = (System.Web.UI.WebControls.Label)e.Row.FindControl("lblRoleId"); 
      System.Web.UI.WebControls.Label lblSupervisorName = (System.Web.UI.WebControls.Label)e.Row.FindControl("lblSupervisorName"); 
      System.Web.UI.WebControls.Label lblUserECode = (System.Web.UI.WebControls.Label)e.Row.FindControl("lblUserECode"); 
      System.Web.UI.WebControls.Label lblUserName = (System.Web.UI.WebControls.Label)e.Row.FindControl("lblUserName"); 
      System.Web.UI.WebControls.Label lblDesignation = (System.Web.UI.WebControls.Label)e.Row.FindControl("lblDesignation"); 
      System.Web.UI.WebControls.Label lblLDTraining = (System.Web.UI.WebControls.Label)e.Row.FindControl("lblLDTraining"); 
      System.Web.UI.WebControls.Label lblNonProduction = (System.Web.UI.WebControls.Label)e.Row.FindControl("lblNonProduction"); 
      System.Web.UI.WebControls.Label lblProcessSupport = (System.Web.UI.WebControls.Label)e.Row.FindControl("lblProcessSupport"); 
      System.Web.UI.WebControls.Label lblProcessTraining = (System.Web.UI.WebControls.Label)e.Row.FindControl("lblProcessTraining"); 
      System.Web.UI.WebControls.Label lblProduction = (System.Web.UI.WebControls.Label)e.Row.FindControl("lblProduction"); 
      System.Web.UI.WebControls.Label lblSystemDowntime = (System.Web.UI.WebControls.Label)e.Row.FindControl("lblSystemDowntime"); 
      System.Web.UI.WebControls.Label lblGrandTotal = (System.Web.UI.WebControls.Label)e.Row.FindControl("lblGrandTotal"); 

      //Checking weather Columns exist in the Pivot or not 

      var dataRow = (DataRowView)e.Row.DataItem; 
      var columnNameToCheck = "L & D Training%"; 
      var checkTraining = dataRow.Row.Table.Columns.Cast<DataColumn>().Any(x => x.ColumnName.Equals(columnNameToCheck, StringComparison.InvariantCultureIgnoreCase)); 
      if (checkTraining) 
      { 
       // Property available 
       lblLDTraining.Text = (DataBinder.Eval(e.Row.DataItem, "L & D Training%")).ToString(); 
      } 
      else 
      { 
       lblLDTraining.Visible = false; 
      } 


      var columnNonProduction = "Non Production%"; 
      var checkNonProduction = dataRow.Row.Table.Columns.Cast<DataColumn>().Any(x => x.ColumnName.Equals(columnNonProduction, StringComparison.InvariantCultureIgnoreCase)); 
      if (checkNonProduction) 
      { 
       // Property available 
       lblNonProduction.Text = (DataBinder.Eval(e.Row.DataItem, "Non Production%")).ToString(); 
      } 
      else 
      { 
       lblNonProduction.Visible = false; 
      } 

      var columnProcessSupport = "Process Support%"; 
      var checkProcessSupport = dataRow.Row.Table.Columns.Cast<DataColumn>().Any(x => x.ColumnName.Equals(columnProcessSupport, StringComparison.InvariantCultureIgnoreCase)); 
      if (checkProcessSupport) 
      { 
       // Property available 
       lblProcessSupport.Text = (DataBinder.Eval(e.Row.DataItem, "Process Support%")).ToString(); 
      } 
      else 
      { 
       lblProcessSupport.Visible = false; 
      } 

      var columnProcessTraining = "Process Training%"; 
      var checkProcesstraining = dataRow.Row.Table.Columns.Cast<DataColumn>().Any(x => x.ColumnName.Equals(columnProcessTraining, StringComparison.InvariantCultureIgnoreCase)); 
      if (checkProcesstraining) 
      { 
       // Property available 
       lblProcessTraining.Text = (DataBinder.Eval(e.Row.DataItem, "Process Training%")).ToString(); 
      } 
      else 
      { 
       lblProcessTraining.Visible = false; 
      } 

      var columnProduction = "Production%"; 
      var checkProduction = dataRow.Row.Table.Columns.Cast<DataColumn>().Any(x => x.ColumnName.Equals(columnProduction, StringComparison.InvariantCultureIgnoreCase)); 
      if (checkProduction) 
      { 
       // Property available 
       lblProduction.Text = (DataBinder.Eval(e.Row.DataItem, "Production%")).ToString(); 
      } 
      else 
      { 
       lblProduction.Visible = false; 
      } 


      var columnSystemDownTime = "System Downtime%"; 
      var checkSystemDownTime = dataRow.Row.Table.Columns.Cast<DataColumn>().Any(x => x.ColumnName.Equals(columnSystemDownTime, StringComparison.InvariantCultureIgnoreCase)); 
      if (checkSystemDownTime) 
      { 
       // Property available 
       lblSystemDowntime.Text = (DataBinder.Eval(e.Row.DataItem, "System Downtime%")).ToString(); 
      } 
      else 
      { 
       lblSystemDowntime.Visible = false; 
      } 

      var columnGrandTotal = "Grand Total%"; 
      var checkGrandTotal = dataRow.Row.Table.Columns.Cast<DataColumn>().Any(x => x.ColumnName.Equals(columnGrandTotal, StringComparison.InvariantCultureIgnoreCase)); 
      if (checkGrandTotal) 
      { 
       // Property available 
       lblGrandTotal.Text = (DataBinder.Eval(e.Row.DataItem, "Grand Total%")).ToString(); 
      } 
      else 
      { 
       lblGrandTotal.Visible = false; 
      } 



      var columnNameToCheckRoleID = "RoleId"; 
      var checkRoleID = dataRow.Row.Table.Columns.Cast<DataColumn>().Any(x => x.ColumnName.Equals(columnNameToCheckRoleID, StringComparison.InvariantCultureIgnoreCase)); 
      if (checkRoleID) 
      { 
       // Property available 
       lblRoleNo.Text = (DataBinder.Eval(e.Row.DataItem, "RoleId")).ToString(); 
      } 
      else 
      { 
       lblRoleNo.Visible = false; 
      } 

      var columnNameToCheckSupervisorName = "SupervisorName"; 
      var checkSupervisorName = dataRow.Row.Table.Columns.Cast<DataColumn>().Any(x => x.ColumnName.Equals(columnNameToCheckSupervisorName, StringComparison.InvariantCultureIgnoreCase)); 
      if (checkSupervisorName) 
      { 
       // Property available 
       lblSupervisorName.Text = (DataBinder.Eval(e.Row.DataItem, "SupervisorName")).ToString(); 
      } 
      else 
      { 
       lblSupervisorName.Visible = false; 
      } 


      var columnNameToCheckUserECode = "UserECode"; 
      var checkUserECode = dataRow.Row.Table.Columns.Cast<DataColumn>().Any(x => x.ColumnName.Equals(columnNameToCheckUserECode, StringComparison.InvariantCultureIgnoreCase)); 
      if (checkUserECode) 
      { 
       // Property available 
       lblUserECode.Text = (DataBinder.Eval(e.Row.DataItem, "UserECode")).ToString(); 
      } 
      else 
      { 
       lblUserECode.Visible = false; 
      } 

      var columnNameToCheckUserName = "UserName"; 
      var checkUserName = dataRow.Row.Table.Columns.Cast<DataColumn>().Any(x => x.ColumnName.Equals(columnNameToCheckUserName, StringComparison.InvariantCultureIgnoreCase)); 
      if (checkUserName) 
      { 
       // Property available 
       lblUserName.Text = (DataBinder.Eval(e.Row.DataItem, "UserName")).ToString(); 
      } 
      else 
      { 
       lblUserName.Visible = false; 
      } 

      var columnNameToCheckDesignation = "Designation"; 
      var checkDesignation = dataRow.Row.Table.Columns.Cast<DataColumn>().Any(x => x.ColumnName.Equals(columnNameToCheckDesignation, StringComparison.InvariantCultureIgnoreCase)); 
      if (checkDesignation) 
      { 
       // Property available 
       lblDesignation.Text = (DataBinder.Eval(e.Row.DataItem, "Designation")).ToString(); 
      } 
      else 
      { 
       lblDesignation.Visible = false; 
      } 


      //Changing color of the Pivot Data 

      if (Convert.ToInt32(lblRoleNo.Text.ToString()) == 2) 
      { 
       e.Row.BackColor = System.Drawing.Color.GreenYellow; 
      } 
      if (Convert.ToInt32(lblRoleNo.Text.ToString()) == 3) 
      { 
       e.Row.BackColor = System.Drawing.Color.Cyan; 
      } 
      if (Convert.ToInt32(lblRoleNo.Text.ToString()) == 4) 
      { 
       e.Row.BackColor = System.Drawing.Color.Orange; 
      } 
      if (Convert.ToInt32(lblRoleNo.Text.ToString()) == 5) 
      { 
       e.Row.BackColor = System.Drawing.Color.Pink; 
      } 






     } 
-1

這段代碼提供給您以隱藏代碼特定的細胞,如果後面的值是空白......

Protected Sub gvCoreUtilization_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvCoreUtilization.RowDataBound 
     Try 
      If e.Row.RowType = DataControlRowType.DataRow Then 

       Dim olblRoleID As New Label 
       Dim olblSupervisorName As New Label 
       Dim olblUserECode As New Label 
       Dim olblUserName As New Label 
       Dim olblDesignation As New Label 
       Dim olblLDTraining As New Label 
       Dim olblNonProduction As New Label 
       Dim olblProcessSupport As New Label 
       Dim olblProcessTraining As New Label 
       Dim olblProduction As New Label 
       Dim olblSystemDowntime As New Label 
       Dim olblGrandTotal As New Label 

       olblRoleID = CType(e.Row.FindControl("lblRoleID"), Label) 
       olblSupervisorName = CType(e.Row.FindControl("lblSupervisorName"), Label) 
       olblUserECode = CType(e.Row.FindControl("lblUserECode"), Label) 
       olblUserName = CType(e.Row.FindControl("lblUserName"), Label) 
       olblDesignation = CType(e.Row.FindControl("lblDesignation"), Label) 
       olblLDTraining = CType(e.Row.FindControl("lblLDTraining"), Label) 
       olblNonProduction = CType(e.Row.FindControl("lblNonProduction"), Label) 
       olblProcessSupport = CType(e.Row.FindControl("lblProcessSupport"), Label) 
       olblProcessTraining = CType(e.Row.FindControl("lblProcessTraining"), Label) 
       olblProduction = CType(e.Row.FindControl("lblProduction"), Label) 
       olblSystemDowntime = CType(e.Row.FindControl("lblSystemDowntime"), Label) 
       olblGrandTotal = CType(e.Row.FindControl("lblGrandTotal"), Label) 


       If CType(DataBinder.Eval(e.Row.DataItem, "RoleId"), String) = "" Then 
        olblRoleID.Visible = False 
       Else 
        olblRoleID.Text = DataBinder.Eval(e.Row.DataItem, "RoleId") 
       End If 

       If CType(DataBinder.Eval(e.Row.DataItem, "SupervisorName"), String) = "" Then 
        olblSupervisorName.Visible = False 
       Else 
        olblSupervisorName.Text = DataBinder.Eval(e.Row.DataItem, "SupervisorName") 
       End If 

       If CType(DataBinder.Eval(e.Row.DataItem, "UserECode"), String) = "" Then 
        olblUserECode.Visible = False 
       Else 
        olblUserECode.Text = DataBinder.Eval(e.Row.DataItem, "UserECode") 
       End If 

       If CType(DataBinder.Eval(e.Row.DataItem, "UserName"), String) = "" Then 
        olblUserName.Visible = False 
       Else 
        olblUserName.Text = DataBinder.Eval(e.Row.DataItem, "UserName") 
       End If 

       If CType(DataBinder.Eval(e.Row.DataItem, "Designation"), String) = "" Then 
        olblDesignation.Visible = False 
       Else 
        olblDesignation.Text = DataBinder.Eval(e.Row.DataItem, "Designation") 
       End If 

       If CType(DataBinder.Eval(e.Row.DataItem, "L & D Training"), String) = "" Then 
        olblLDTraining.Visible = False 
       Else 
        olblLDTraining.Text = DataBinder.Eval(e.Row.DataItem, "L & D Training") 
       End If 

       If CType(DataBinder.Eval(e.Row.DataItem, "Non Production"), String) = "" Then 
        olblNonProduction.Visible = False 
       Else 
        olblNonProduction.Text = DataBinder.Eval(e.Row.DataItem, "Non Production") 
       End If 

       If CType(DataBinder.Eval(e.Row.DataItem, "Process Support"), String) = "" Then 
        olblProcessSupport.Visible = False 
       Else 
        olblProcessSupport.Text = DataBinder.Eval(e.Row.DataItem, "Process Support") 
       End If 

       If CType(DataBinder.Eval(e.Row.DataItem, "Process Training"), String) = "" Then 
        olblProcessTraining.Visible = False 
       Else 
        olblProcessTraining.Text = DataBinder.Eval(e.Row.DataItem, "Process Training") 
       End If 

       If CType(DataBinder.Eval(e.Row.DataItem, "Production"), String) = "" Then 
        olblProduction.Visible = False 
       Else 
        olblProduction.Text = DataBinder.Eval(e.Row.DataItem, "Production") 
       End If 


       If CType(DataBinder.Eval(e.Row.DataItem, "System Downtime"), String) = "" Then 
        olblSystemDowntime.Visible = False 
       Else 
        olblSystemDowntime.Text = DataBinder.Eval(e.Row.DataItem, "System Downtime") 
       End If 

       If CType(DataBinder.Eval(e.Row.DataItem, "Grand Total"), String) = "" Then 
        olblGrandTotal.Visible = False 
       Else 
        olblGrandTotal.Text = DataBinder.Eval(e.Row.DataItem, "Grand Total") 
       End If 

      End If 
     Catch ex As Exception 
      General.LogException(ex) 
     End Try 
    End Sub 

如果你想隱藏在電網整列請按照下面的步驟

1)每列創建頁面上查看國家財產

Property RoleId() As boolen 
     Get 
      If IsNothing(Me.ViewState("RoleId")) Then Me.ViewState("RoleId") = false 
      Return CType(Me.ViewState("RoleId"), Boolean) 
     End Get 
     Set(ByVal value As Boolean) 
      Me.ViewState("RoleId") = value 
     End Set 
    End Property 

2)循環罰球數據集,每列的每一行,並檢查值存在與否,並設置該屬性,最後你^ h ave屬性的值爲true或false,您可以找到哪個列需要在網格中顯示。

3)那麼你可以很容易地隱藏網格列。

if Me.RoleId= True then 
'Write code to Display 
else 
'Write code to Hide 
end if 
0

試試這個每個模板領域。 設置Visible屬性如下...... 可見= '<%#!String.IsNullOrEmpty(EVAL( 「角色ID」)。的ToString())%>'