for循环中的网格绑定

时间:2011-01-20 12:18:05

标签: c# asp.net gridview

我正在开发一个网站,我需要多次绑定一个网格{在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();
    }

3 个答案:

答案 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;
}