-3

for真の条件のループは、パラメータをストアドプロシージャに送信し、必要な結果がに格納されDataTableます。今私の問題は、すべてのループで、の値がDataTable新しい値で更新され、以前の値が失われることです。真の状態のすべての値を?に保持するDataTable方法

for (int i = 0; i < gridview1.Rows.Count; i++)
{
    string yojnaNo = "";
    CheckBox chl = (CheckBox)gridview1.Rows[i].Cells[0].FindControl("CheckBox1");

    if (chl != null)
    {
        if (chl.Checked == true)
        {
            int rowsNo = (Convert.ToInt16(chl.ToolTip) - 1); //Convert.ToInt16(SrNo);
            yojnaNo = ((Label)gridview1.Rows[rowsNo].FindControl("lblYojnaNo")).Text;
            sc.Add(yojnaNo);
        }
    }

    objyojnadetail4.YojnaNo = sc;
    DataTable city = objyojnadetail4.Selectcity();
}
4

1 に答える 1

1

都市のインスタンス化を外側に配置し、すべてのループで各行を追加することができます。値を失うことはありませんが、代わりに、cityループごとに大きくなります。

DataTable city = new DataTable(); // instantiate here
for (int i = 0; i < gridview1.Rows.Count; i++)
{
    string yojnaNo = "";
    CheckBox chl = (CheckBox)gridview1.Rows[i].Cells[0].FindControl("CheckBox1");

    if (chl != null)
    {
        if (chl.Checked == true)
        {
            int rowsNo = (Convert.ToInt16(chl.ToolTip) - 1); //Convert.ToInt16(SrNo);
            yojnaNo = ((Label)gridview1.Rows[rowsNo].FindControl("lblYojnaNo")).Text;
            sc.Add(yojnaNo);
        }
    }

    objyojnadetail4.YojnaNo = sc;

    // this foreach loop may loop on anything the objyojnadetail4.Selectcity() provides
    // what was important is that, in this loop you insert each data into rows in city.
    foreach(var singleItem in objyojnadetail4.Selectcity().Rows)
    {
        city.Rows.Add(singleItem);
    }
}
于 2013-01-03T12:48:46.847 に答える