检查列和绑定网格是否存在

本文关键字:是否 存在 网格 绑定 检查 | 更新日期: 2023-09-27 18:12:09

如何在RowDataBound事件中将数据绑定到gridviewitemtemplate。我正在使用一个网格视图,下面是该网格视图的代码。

<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 &我在ItemTemplate上绑定的"D培训%"、"非生产%"、"过程支持%"、"过程培训%"、"生产%"、"系统停机%"、"总百分比"。

检查列和绑定网格是否存在

在每个模板字段上尝试此操作。设置可见属性如下…可见= ' & lt; % # ! String.IsNullOrEmpty (Eval .ToString("RoleId") ()) %>'

 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;
            }



        }

此代码为您提供了在值为空白时隐藏特定单元格的功能…

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)为每个列创建View state属性

 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)循环抛出数据集为每列的每一行,检查值是否存在,并设置此属性,最后你有属性值为真或假,你可以找到哪一列需要在网格中显示。

3),然后你可以很容易地隐藏列的网格。

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