Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 当网格视图为空时隐藏网格视图中的列_Asp.net_Gridview - Fatal编程技术网

Asp.net 当网格视图为空时隐藏网格视图中的列

Asp.net 当网格视图为空时隐藏网格视图中的列,asp.net,gridview,Asp.net,Gridview,我有一个网格视图,其中隐藏了一些列。当网格视图中至少有一个项目,但当我的网格为空时,它会显示隐藏列时,它会给出预期的结果。当没有记录时如何解决此问题意味着网格视图为空,那么它也会隐藏隐藏的列我正在网格的OnitemDataBound(对象发送者,GridItemEventArgs e)事件中隐藏列。将隐藏列数据放入Gridview的DataKeyName属性中。然后它将不显示任何列。你可以得到它,以便进一步使用。如果要显示“未找到数据”消息,请设置EmptyDataText=“未找到数据!!!”

我有一个网格视图,其中隐藏了一些列。当网格视图中至少有一个项目,但当我的网格为空时,它会显示隐藏列时,它会给出预期的结果。当没有记录时如何解决此问题意味着网格视图为空,那么它也会隐藏隐藏的列我正在网格的OnitemDataBound(对象发送者,GridItemEventArgs e)事件中隐藏列。

将隐藏列数据放入Gridview的DataKeyName属性中。然后它将不显示任何列。你可以得到它,以便进一步使用。如果要显示“未找到数据”消息,请设置EmptyDataText=“未找到数据!!!”

该列应使用代码隐藏。 1.逻辑应该是这样的:我们循环行,看看列是否没有所有行的值。 2.如果仅列的值不存在,则隐藏该列。 3.整个逻辑应该在prerender事件中实现

今晚我可以给你提供示例代码

下面是示例代码

 protected void GridView1_PreRender(object sender, EventArgs e)
            {
                bool isColumnEmpty = true;
                int columnIndex =2;
                for (int i = 0; i < GridView1.Rows.Count; i++)
                {
                    if (GridView1.Rows[i].Cells[columnIndex].ToString() != string.Empty)
                    {
                        isColumnEmpty = false;
                        break;
                    }
                }
                if (isColumnEmpty)
                {
                    GridView1.Columns[columnIndex].Visible = false;
                }
            }
受保护的void GridView1\u预渲染(对象发送方,事件参数e)
{
bool isColumnEmpty=true;
int-columnIndex=2;
对于(int i=0;i
完整代码示例 ASPX代码:

<form id="form1" runat="server">
    <div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            onprerender="GridView1_PreRender">
            <Columns>
                <asp:BoundField DataField="dc1" HeaderText="Column - 1" />
                <asp:BoundField DataField="dc2" HeaderText="Column - 2" />
                <asp:BoundField DataField="dc3" HeaderText="Column - 3" />
                <asp:BoundField DataField="dc4" HeaderText="Column - 4" />
                <asp:BoundField DataField="dc5" HeaderText="Column - 5" />
            </Columns>
        </asp:GridView>
    </div>
    </form>

CS代码:

 public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            GridView1.DataSource = GetDataSet();
            GridView1.DataBind();
        }

        private DataSet GetDataSet()
        {
            DataSet ds = new DataSet();
            DataTable dt = new DataTable();

            DataColumn dc1 = new DataColumn("dc1");
            DataColumn dc2 = new DataColumn("dc2");
            DataColumn dc3 = new DataColumn("dc3");
            DataColumn dc4 = new DataColumn("dc4");
            DataColumn dc5 = new DataColumn("dc5");

            dt.Columns.Add(dc1);
            dt.Columns.Add(dc2);
            dt.Columns.Add(dc3);
            dt.Columns.Add(dc4);
            dt.Columns.Add(dc5);

            for (int i = 0; i < 10; i++)
            {
                DataRow dr = dt.NewRow();
                dr[dc1] = i;
                //dr[dc2] = "2" + i.ToString();
                dr[dc3] = "3"+ i.ToString();
                dr[dc4] = "4" + i.ToString();
                dr[dc5] = "5" + i.ToString();
                dt.Rows.Add(dr);
            }

            ds.Tables.Add(dt);
            return ds;
        }

        protected void GridView1_PreRender(object sender, EventArgs e)
        {
            bool isColumnEmpty = true;
            int columnIndex =2;
            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                if (GridView1.Rows[i].Cells[columnIndex].ToString() != string.Empty)
                {
                    isColumnEmpty = false;
                    break;
                }
            }
            if (isColumnEmpty)
            {
                GridView1.Columns[columnIndex].Visible = false;
            }
        }
    }
public部分类默认值:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
GridView1.DataSource=GetDataSet();
GridView1.DataBind();
}
私有数据集GetDataSet()
{
数据集ds=新数据集();
DataTable dt=新的DataTable();
DataColumn dc1=新的DataColumn(“dc1”);
DataColumn dc2=新的DataColumn(“dc2”);
DataColumn dc3=新的DataColumn(“dc3”);
DataColumn dc4=新的DataColumn(“dc4”);
DataColumn dc5=新的DataColumn(“dc5”);
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc3);
dt.Columns.Add(dc4);
dt.Columns.Add(dc5);
对于(int i=0;i<10;i++)
{
DataRow dr=dt.NewRow();
dr[dc1]=i;
//dr[dc2]=“2”+i.ToString();
dr[dc3]=“3”+i.ToString();
dr[dc4]=“4”+i.ToString();
dr[dc5]=“5”+i.ToString();
dt.Rows.Add(dr);
}
ds.Tables.Add(dt);
返回ds;
}
受保护的void GridView1_预渲染(对象发送方,事件参数e)
{
bool isColumnEmpty=true;
int-columnIndex=2;
对于(int i=0;i
假设没有来自服务器的数据,您希望隐藏列名或类似的内容。可以使用栅格视图的空模板功能。转到设计器模式,单击栅格视图的“快捷”属性。转到模板并选择空模板。然后写一些文本或消息,比如“找不到记录”,然后运行代码。您不需要为此编写任何服务器端代码

听说过标点符号吗?兄弟,请写一些代码作为例子。显然你没有。不管怎么说,我认为你也不理解这个概念。你是第一个应该发布代码的人…不,我只是刚刚开始开发…这就是我在问的…然后你可能应该稍后回来,提出一个真正的问题如果你觉得有帮助,请对答案进行评分。。。这将帮助其他有同样问题的人:)谢谢