我正在开发一个网站,我需要多次绑定一个网格{在for循环中} 并且正如预期的那样,网格会覆盖先前的值并预览最新的迭代结果
您可能需要帮助代码。这是: -
for (Int32 i = 0; i < k.Length; i++)
{
business.clsplugins obj = new business.clsplugins();
List<business.clspluginsprp> objprp = new List<business.clspluginsprp>();
Int32 z = Convert.ToInt32(k.GetValue(i));
objprp = obj.fnd_plugins(z);
GridView2.DataSource = objprp;
GridView2.DataBind();
}
答案 0 :(得分:1)
您需要将List声明和GridView分配移动到for循环之外 - 现在您每次迭代都创建一个新List,您只想创建一个,然后将其绑定到Grid ...例如:
List<business.clspluginsprp> objprp = new List<business.clspluginsprp>();
business.clsplugins obj = new business.clsplugins();
for (Int32 i = 0; i < k.Length; i++)
{
Int32 z = Convert.ToInt32(k.GetValue(i));
objprp.Add(obj.fnd_plugins(z));
}
GridView2.DataSource = objprp;
GridView2.DataBind();
答案 1 :(得分:0)
Cou不能绑定两次。然后你调用DataBind()。 Control根据当前数据源重建内容。旧内容被丢弃。因此,您应该使用包含所有数据的List,将其分配给DataSource,然后调用DataBind()
答案 2 :(得分:0)
试试这个。
这种方法可能对您有所帮助。从代码中获取概念并以您的方式实施。
<强> ASPX:强>
<asp:PlaceHolder ID="plcSample" runat="server">
</asp:PlaceHolder>
代码背后:
protected void Page_Load(object sender, EventArgs e)
{
DataSet dsSample = GetDataSet();
GridView gvSample;
if (dsSample.Tables.Count > 0 && dsSample.Tables[0].Rows.Count > 0)
{
for (int iCount = 0; iCount < dsSample.Tables.Count; iCount++)
{
gvSample = new GridView();
gvSample.DataSource = dsSample.Tables[iCount];
gvSample.DataBind();
plcSample.Controls.Add(gvSample);
}
}
}
private DataSet GetDataSet()
{
DataSet ds = new DataSet();
DataTable dt;
dt = new DataTable();
dt.Columns.Add(new DataColumn("ID", typeof(string)));
dt.Columns.Add(new DataColumn("Code", typeof(string)));
DataRow dr;
dr = dt.NewRow();
dr["ID"] = 1;
dr["Code"] = "KK";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = 2;
dr["Code"] = "Karan";
dt.Rows.Add(dr);
ds.Tables.Add(dt);
dt = new DataTable();
dt.Columns.Add(new DataColumn("ID", typeof(string)));
dt.Columns.Add(new DataColumn("Code", typeof(string)));
dr = dt.NewRow();
dr["ID"] = 1;
dr["Code"] = "AA";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = 2;
dr["Code"] = "Arun";
dt.Rows.Add(dr);
ds.Tables.Add(dt);
return ds;
}