Asp.net 添加到gridview don';当触发保存事件时,不会持续

Asp.net 添加到gridview don';当触发保存事件时,不会持续,asp.net,gridview,webforms,Asp.net,Gridview,Webforms,我的网页上有一个gridview,可以动态添加行。有一个for循环,用于添加如下行: protected void AddNewJob(object sender, EventArgs e) { for(int i = 0; i < Convert.ToInt32(newJobCount.Text);i++) { TableRow tr = new TableRow(); tr.Cells.Add(Se

我的网页上有一个gridview,可以动态添加行。有一个for循环,用于添加如下行:

protected void AddNewJob(object sender, EventArgs e)
    {
        for(int i = 0; i < Convert.ToInt32(newJobCount.Text);i++)
        {
            TableRow tr = new TableRow();
            tr.Cells.Add(ServicesDDL("-- Select Service Type --"));
            tr.Cells.Add(JobsDDL("-- Select Job Type --"));
            tr.Cells.Add(TextBoxCell());
            tr.Cells.Add(TextBoxCell());
            tr.Cells.Add(TextBoxCell());

            assetTable.Rows.Add(tr);
        }          
    }
foreach (TableRow row in assetTable.Rows)
{

if (isFirst)
{
    isFirst = false;
    continue;
}

DropDownList service = (DropDownList)row.Cells[0].Controls[0];
string assetText = service.SelectedItem.Value;
DropDownList jobDescription = (DropDownList)row.Cells[1].Controls[0];
string serialText = jobDescription.SelectedItem.Value;
TextBox equipmentCount = (TextBox)row.Cells[2].Controls[0];
string leaseText = equipmentCount.Text;
TextBox jobSize = (TextBox)row.Cells[3].Controls[0];
string originText = jobSize.Text;
TextBox serialNo = (TextBox)row.Cells[4].Controls[0];
string deliveryText = serialNo.Text;
string oNo = orderNo.Text;

if (assetText != "0" && serialText != "0")
{
    APICallClass.Job j = new APICallClass.Job();
    j.JobTypeID = Convert.ToInt32(serialText);
    j.serviceID = Convert.ToInt32(assetText);
    j.equipment = leaseText;
    j.jobSize = originText;
    j.serialNumbers = deliveryText;
    j.orderID = Convert.ToInt32(global.GlobalID);

    APICallClass.API.AddJob(j, Session["Variable"].ToString());
}
}
当上面粘贴的代码运行时,它只看到从数据库中拉入的行。我想我的问题可以通过调用.databind()之类的东西来解决,但是我已经尝试了一些地方,但他们没有解决这个问题


提前感谢您的帮助,并帮助我成为一名更加健壮的ASP.NET开发人员。

当GridView被
DataBind()
-ed时,GridView的内容将基于GridView的
数据源
进行“重建”。如果需要新行保留在GridView中,请不要在添加新行后调用
DataBind()
,或者在以后调用
DataBind()
之前,确保新行的内容位于GridView的
数据源中


在我写的一页中,有一次我遇到了类似的情况,并做了后者。初始行的数据在第一次页面加载时从数据库中提取,并保存在ViewState中。当用户在GridView中添加、删除和重新排序行时,页面只是更改了ViewState中的数据并重新绑定了GridView。

您不能在aspx页面的GridView中添加这些DropDownList吗?@Win我不明白您的问题。请您重新措辞好吗?我们通常不会在GridView中动态添加控件。它们应该在设计时添加到aspx页面内的模板中。