检查列和绑定网格(如果存在或不存在) [英] Check for column and bind grid if exists or not

查看:82
本文介绍了检查列和绑定网格(如果存在或不存在)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

How to bind data to itemtemplate of gridview at RowDataBound event. I am using a gridview and below is the code for that grid view.

<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中提到的数据集/数据表中是否存在所有列。

2. If all Column exists then bind that column to appropriate Itemtemplate .

3. If All column not exist then display and bind only available column and hide the not available column.



Here i want to remove EVAl for binding the data to itemtemplate. In place of this i want to check weather

1. If all the Column exists in the dataset/Datatable or not which is mentioned in the Gridview.
2. If all Column exists then bind that column to appropriate Itemtemplate .
3. If All column not exist then display and bind only available column and hide the not available column.

推荐答案

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






           }</datacolumn></datacolumn></datacolumn></datacolumn></datacolumn></datacolumn></datacolumn></datacolumn></datacolumn></datacolumn></datacolumn></datacolumn>


this code provide you to hide particular cell from code behind if the value is blank...





this code provide you to hide particular cell from code behind if the value is blank...


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









And if you want to hide entire column in grid please follow below step



1) Create View state property on page for every column









And if you want to hide entire column in grid please follow below step

1) Create View state property on page for every column


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) Loop throw Data-set for every column for each row and check value exist or not and set this property ,finally you have property with value true or false and you can find which column need to display in grid.



3)then you can easily hide column of grid.






2) Loop throw Data-set for every column for each row and check value exist or not and set this property ,finally you have property with value true or false and you can find which column need to display in grid.

3)then you can easily hide column of grid.

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


这篇关于检查列和绑定网格(如果存在或不存在)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆