我创建了GridView,并在C#类库中为动态添加行,用于SP07 WebPartASP.NET在GridView中动态添加行不添加超过2行
。 我的问题是闻一点击按钮(创建)未加入超过2行..
这是创建按钮:
void addBtn_Click(object sender, EventArgs e)
{
AddNewRowFun();
}
我AddNewRowFun()方法:
private void AddNewRowFun()
{
int rowIndex = 0;
if (ViewState["Curtbl"] != null)
{
DataTable dt = (DataTable)ViewState["Curtbl"];
DataRow drCurrentRow = null;
if (dt.Rows.Count > 0)
{
for (int i = 1; i <= dt.Rows.Count; i++)
{
TextBox txt1 = (TextBox)myGrid.Rows[rowIndex].Cells[1].FindControl("txt1");
DateTimeControl dt1 = (DateTimeControl)myGrid.Rows[rowIndex].Cells[2].FindControl("dt1");
DateTimeControl dt2 = (DateTimeControl)myGrid.Rows[rowIndex].Cells[3].FindControl("dt2");
TextBox txt2 = (TextBox)myGrid.Rows[rowIndex].Cells[4].FindControl("txt2");
TextBox txt3 = (TextBox)myGrid.Rows[rowIndex].Cells[5].FindControl("txt3");
drCurrentRow = dt.NewRow();
drCurrentRow["rowid"] = i + 1;
dt.Rows[i - 1]["txt1"] = txt1.Text;
dt.Rows[i - 1]["dt1"] = dt1.SelectedDate;
dt.Rows[i - 1]["dt2"] = dt2.SelectedDate;
dt.Rows[i - 1]["txt2"] = txt2.Text;
dt.Rows[i - 1]["txt3"] = txt3.Text;
rowIndex++;
}
dt.Rows.Add(drCurrentRow);
ViewState["Curtbl"] = dt;
myGrid.DataSource = dt;
myGrid.DataBind();
}
}
else
{
//Response.Write("ViewState Value is Null");
}
SetOldData();
我不知道你的代码到底在做什么,但考虑将'dt.Rows.Add(drCurrentRow);'移到'for'循环体中。 –
我按照这个教程.. http://geekswithblogs.net/dotNETvinz/archive/2009/06/04/adding-dynamic-rows-in-gridview-with-textboxes.aspx – Gohyu
你的“for”循环不会触发第三次点击“创建”按钮。请看你的条件:'for(int i = 1; i <= dt.Rows.Count; i ++)'。根据这个循环,当'i <= dt.Rows.Count'时应该结束,并且它在第三个按钮点击,因为'dt.Rows.Count = 2'。 –