【发布时间】:2017-02-27 17:08:13
【问题描述】:
大家好,我必须在 asp.net 中动态添加多个 gridview。没有根据选择生成gridview。
【问题讨论】:
-
SO 不是代码编写服务。向我们展示您迄今为止所做的尝试,然后我们可以尝试为您提供帮助。
大家好,我必须在 asp.net 中动态添加多个 gridview。没有根据选择生成gridview。
【问题讨论】:
如果我没有从标题中理解错误,动态添加多个网格视图意味着要在运行时从代码后面添加网格视图。
由于 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 );
}
希望我正确理解了您的要求,我的解释对您有所帮助。
【讨论】:
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();
}
【讨论】:
我完全同意@RMadd。 SO 不是代码编写服务,您应该首先尝试给我们一些东西来查看并告诉您哪里出错了。
但是,如果您不知道从哪里开始,一种方法是添加所有不可见的空网格视图,并根据选择将它们设置为可见。
对于您的模糊问题,我只能给出一个模糊的答案。
以下是我使用 Google-foo 发现的其他一些地方:
How to dynamically add gridviews side by side using asp.net c#
【讨论】:
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);
}
}
【讨论】: