【问题标题】:What is wrong with this c# method?这个 c# 方法有什么问题?
【发布时间】:2010-07-15 07:35:47
【问题描述】:

这个c#方法有什么问题?

private void getMydatatable()
{
    DataTable dt = new DataTable();
    DataColumn dc;
    dc = new DataColumn("Name");
    dt.Columns.Add(dc);
    dc = new DataColumn("Age");
    dt.Columns.Add(dc);

    dt.Rows.Add("ARUN", "23");
    dt.Rows.Add("BALA", "23");
     GridView1.AutoGenerateColumns = false;
    GridView1.DataSource = dt;
    GridView1.DataBind();
    Page.Controls.Add(GridView1);
}

此方法在页面加载时被调用,但我的 gridview 不可见,为什么?

<form id="form1" runat="server">
    <div>
        <asp:DropDownList ID="DlUser" runat="server">
        </asp:DropDownList>

        <asp:CheckBoxList ID="ChkUser" runat="server">
        </asp:CheckBoxList>
        <asp:GridView ID="GridView1" runat="server">
        </asp:GridView>
    </div>
</form>

【问题讨论】:

    标签: c# asp.net gridview datatable


    【解决方案1】:

    您需要将 GridView 添加到页面,否则您创建的 gv 实例将在您离开此方法后立即被垃圾回收:

    Page.Controls.Add(gv);
    

    【讨论】:

    • 就像这样,人们往往会忘记在响应中写入 cookie,而只是创建它们。然后他们想知道为什么下一个请求没有cookie。 :)
    • “GridView”类型的控件“GridView1”必须放在带有 runat=server 的表单标签内。
    • @MuraliVijay CSK,修改代码后,您不再需要在页面中添加GridView1,因为它已经存在。
    【解决方案2】:

    您的 GridView 似乎不在页面控件中。换句话说,GridView 不在页面上。

    你需要像这样添加它。

    Page.Controls.Add(gv); 
    

    【讨论】:

      【解决方案3】:

      你确定它是隐形的吗?不需要将其添加到表单中吗?

      【讨论】:

        【解决方案4】:

        我假设这是 ASP.NET。你创建一个新的GridView

         GridView gv = new GridView();
        

        并给它一些数据,但是在此处的 sn-p 中,您实际上从未将其放在页面上。所以当这个函数退出时,它超出了范围,GC 清理了它,没有人看到它......

        【讨论】:

          【解决方案5】:

          您根本没有将 GridView 添加到页面中。您创建的 GridView gvgetMydatatable() 方法结束时立即超出范围。

          【讨论】:

            【解决方案6】:

            你声明了

            GridView gv = new GridView(); 
            

            在您的方法范围内。 你最好让它成为你的 GUI 类的成员并添加到控件容器中

            Page.Controls.Add(gv); 
            

            或者通过 GUI 编辑器来实现

            【讨论】:

              【解决方案7】:

              标记指定 GridView1,因此使用该(更新的)代码示例,您无需再次添加它。但是,如果您不自动生成列,则应在标记中指定它们。或者告诉网格自动生成列...

              【讨论】:

                【解决方案8】:

                gridview 正在显示,但是因为您将 AutoGenerateColumns 设置为 false,它实际上并没有呈现任何内容。您还需要删除此行。

                Page.Controls.Add(GridView1);
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-10-08
                  • 2014-08-31
                  • 1970-01-01
                  • 2012-08-16
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多