【问题标题】:How to dynamically add gridview in asp.net c#如何在asp.net c#中动态添加gridview
【发布时间】:2017-02-27 17:08:13
【问题描述】:

大家好,我必须在 asp.net 中动态添加多个 gridview。没有根据选择生成gridview。

【问题讨论】:

  • SO 不是代码编写服务。向我们展示您迄今为止所做的尝试,然后我们可以尝试为您提供帮助。

标签: c# asp.net gridview


【解决方案1】:

如果我没有从标题中理解错误,动态添加多个网格视图意味着要在运行时从代码后面添加网格视图。

由于 GridView 是 ASP.NET C# 中的一个类,我们可以像其他类对象一样创建它的对象并设置它的属性,如下所示:

GridView objGV = new GridView();
objGV .AutoGenerateColumns = false;

并且可以从代码中添加不同类型的列,如BoundField和TemplateField如下:

BoundField field = new BoundField();
field.HeaderText = "Column Header";
field.DataField = Value;
objGV .Columns.Add(field);

最后可以在 .aspx 上的任何容器控件(如面板)下添加此网格视图对象。

PanelId.Controls.Add(objGV );

要添加多个网格实例,只需在循环中迭代上述代码即可:

for(int i=0;i<yourConditionCount;i++)
{
    GridView objGV = new GridView();
     objGV.ID="GV"+i;   // ID of each grid view must be unique

    // your code logic to set properties and events for grid view

   PanelId.Controls.Add(objGV );
} 

希望我正确理解了您的要求,我的解释对您有所帮助。

【讨论】:

  • 感谢兄弟的工作,但我还必须添加面板和面板网格视图内。但是它给出的错误是''GridView'必须放在带有runat = server'的表单标签内,再次感谢
  • 你能分享一下你的 .aspx 和 .aspx.cs 文件代码吗?
【解决方案2】:
private void BindDynaicGrd()
    {
        //instance of a datatable
        DataTable dt = new DataTable();
        //instance of a datarow
        DataRow drow;
        //creating two datacolums dc1 and dc2 
        DataColumn dc1 = new DataColumn("Code", typeof(string));
        DataColumn dc2 = new DataColumn("Name", typeof(string));
        //adding datacolumn to datatable
        dt.Columns.Add(dc1);
        dt.Columns.Add(dc2);

        if (grd.Rows.Count > 0)
        {
            foreach (GridViewRow gvr in grdSites.Rows)
            {

                CheckBox chk_Single = (CheckBox)gvr.FindControl("chkSingle");
                if (chk_Single.Checked == true)
                {
                    Label lbl_Code = (Label)gvr.FindControl("lblCode");
                    Label lbl_Name = (Label)gvr.FindControl("lblName");
                    //instance of a datarow
                    drow = dt.NewRow();
                    //add rows to datatable
                    //add Column values
                    drow = dt.NewRow();
                    drow["Code"] = lbl_Code.Text;
                    drow["Name"] = lbl_Name.Text.ToString();
                    dt.Rows.Add(drow);
                }
            }
        }
        //set gridView Datasource as dataTable dt.
        gridcl.DataSource = dt;
        //Bind Datasource to gridview
        gridcl.DataBind();
    }

【讨论】:

    【解决方案3】:

    我完全同意@RMadd。 SO 不是代码编写服务,您应该首先尝试给我们一些东西来查看并告诉您哪里出错了。

    但是,如果您不知道从哪里开始,一种方法是添加所有不可见的空网格视图,并根据选择将它们设置为可见。

    对于您的模糊问题,我只能给出一个模糊的答案。

    以下是我使用 Google-foo 发现的其他一些地方:

    http://www.dotnetfox.com/articles/create-dynamic-gridview-or-programmatically-create-Asp-Net-gridview-with-dynamic-boundfield-1083.aspx

    How to dynamically add gridviews side by side using asp.net c#

    http://codedisplay.com/runtime-dynamically-creating-gridview-and-bind-data-in-bound-columns-using-asp-net-c-vb-net/

    【讨论】:

      【解决方案4】:


               DataSet ds = new DataSet();
              ds = obj.GetMedicalGridWithAge(MphID, ProductCode);
              if(ds.Tables.Count > 0)
              {
                  if (ds.Tables[1].Rows.Count > 0)
                  {
                      for (int i = 0; i < ds.Tables.Count; i++)
                      {
      
                          GridView gv = new GridView();
                          gv.ID = "gv" + (i + 1);
                          
                          gv.DataSource = ds.Tables[i];
                          gv.DataBind();
                          Panel1.Controls.Add(gv);
                          Label newLine = new Label(); newLine.Text = "<br/>";
                          Panel1.Controls.Add(newLine);
      
                      }
                  }
                  else
                  {
                      GridView gv = new GridView();
                      gv.ID = "gv" ;
      
                      gv.DataSource = null;
                      gv.DataBind();
                      Panel1.Controls.Add(gv);
                  }
                 
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-20
        • 2010-09-19
        • 1970-01-01
        • 2010-10-27
        • 1970-01-01
        • 1970-01-01
        • 2021-06-16
        相关资源
        最近更新 更多