在asp.net中的gridview之间添加一行会删除最后一行

时间:2016-11-25 04:49:14

标签: c# asp.net gridview

当我动态地向预先填充的GridView添加新行时,我在ASP.NET的gridview中遇到了一个问题

我的网格视图包含两种类型的元素(比如A和B),它们是从数据库中预先填充的

我编写的代码首先计算A类元素的数量,然后在行A和行B的元素之间添加一个新行作为“ROW Seperator”。 我在网格视图的行数据绑定事件中写了这一点逻辑

我的网格视图包含A类和B类元素的复选框。

现在,如果我检查网格视图中的最后一个元素,我在确定了给定元素不再存在于gridView中的断点之后实现了,尽管它在视觉上显示在用户的前端到“检查”

我相信这与我添加到gridView的动态行分隔符有关,但我似乎无法理解为什么。

以下是我的代码。

    //Page Load
    protected void Page_Load(object sender, EventArgs e)
    {
        //Getting count of elements of type A and storing it in a global variable
        globalA_count= GetCount(dataset);
        gridView.DataBind();
    }
    // GRIDVIEW DATABOUND

    protected void gvAccessories_RowDataBound(object sender, GridViewRowEventArgs e)
{
    //DATA SET IS ALREADY SORTED SO THAT "A" ELEMNTS AND 'B" ELEMENTS ARE GROUPED TOGETHERE
    if (e.Row.Cells[4].Text == "B")
    {
        e.Row.BackColor = System.Drawing.Color.FromArgb(236, 236, 236);
    }
    /*** "localA_Count" is used as a counter to count "A" elements within   rowdatabound
       * globalA_count" holds the count of "A" elements already calculated
       *  when "localA_Count" equals "globalA_count",it means all 
        A type elements are already traversed**/
     else if (e.Row.Cells[4].Text == "A")
     {
         localA_Count++;
         if (localA_Count== globalA_count)
         {
             // ADD ROW SEPERATOR
             GridViewRow row = new GridViewRow(0, 0, DataControlRowType.DataRow, DataControlRowState.Insert);   
             row.CssClass = "StdGridHeader";
             TableCell cell1 = new TableCell();
             cell1.Text = "sample text"
             cell1.HorizontalAlign = HorizontalAlign.Center;
             cell1.ColumnSpan = 4;
             row.Cells.Add(cell1);
             ((GridView)sender).Controls[0].Controls.AddAt(globalA_count+ 1, row);
          }
    }

}

1 个答案:

答案 0 :(得分:0)

您是否正在添加代码以更正事件?你的gridview id是" gridview"但事件是不同的gvAccessories_RowDataBound()?