我这里所说的GridView添加行、删除行都不涉及数据库操作。目前做的有:   protected void Page_Load(object sender, EventArgs e)
    {
        Page.MaintainScrollPositionOnPostBack = true;
        if (!Page.IsPostBack)
        {
            ……
 
            ViewState["k"] = 0;        }
    }  /// <summary>
    /// 添加行
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>    protected void btn_Add_Row_Click(object sender, EventArgs e)
    {
        int k = Convert.ToInt32(ViewState["k"].ToString());        k++;        ViewState["k"] = k;        DataTable dataTable = new DataTable();
        DataColumn column;        for (int j = 0; j < k; j++)
        {
            column = new DataColumn();
            column.ColumnName = "COL" + j;
            dataTable.Columns.Add(column);            DataRow row = dataTable.NewRow();
            row["COL" + j] = "001";            dataTable.Rows.Add(row);
        }        this.GridView_WHTSHD_WZ.DataSource = dataTable;
        this.GridView_WHTSHD_WZ.DataBind();
        ViewState["j"] = this.GridView_WHTSHD_WZ.Rows.Count - 1;    }    /// <summary>
    /// 删除行
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>    protected void btn_Del_Row_Click(object sender, EventArgs e)
    {
        int i = this.GridView_WHTSHD_WZ.SelectedIndex;        if (i < 0|| this.GridView_WHTSHD_WZ.Rows[i].Visible==false)
        {            int j = Convert.ToInt32(ViewState["j"].ToString());            if (this.GridView_WHTSHD_WZ.Rows[j].Visible == false)
            {
                j--;                ViewState["j"] = j;
            }            this.GridView_WHTSHD_WZ.Rows[j].Visible = false;
        }
        else
        {
            this.GridView_WHTSHD_WZ.Rows[i].Visible = false;
        }    }
没找到真正的删除行的方法,用的是设置行的Visible属性,这样有个问题,其实那些被“删除”的行还在,比如我添加了3行,点删除全部“删除”完了后,再来点添加一下子就出现4行了。我这样做的目的是让用户自己控制行数,然后自己输入内容,GridView模板列里放有TextBox控件。因为需要在FootRow里涉及到数据的汇总,所以用普通的HTML、JS做法不能满足我的需要。大家看看,帮我在此基础上可有好的办法完善下,或者是否有真正的删除行的方法;如果有别的思路可以达到目的也行。上面的代码没放详细的注释了,大家应该能看的懂。

解决方案 »

  1.   

    用的是设置行的Visible属性,只是不显示。没有删除的
      

  2.   

    /// <summary>
        /// 进行删除时事件    /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnDel_Click(object sender, EventArgs e)
        {
            try
            {
                for (int i = 0; i < this.gvSelfHelpPublicShare.Rows.Count; i++)
                {
                    if (((CheckBox)this.gvSelfHelpPublicShare.Rows[i].Cells[0].Controls[1]).Checked == true)
                    {
                        SelfHelpPublicShareID = UtilTool.ToSafeInt32(this.gvSelfHelpPublicShare.DataKeys[i].Value);                    new SelfHelpPublicShareManager().DeleteSelfHelpPublicShareByID(SelfHelpPublicShareID);
                    }
                }
                this.BindPageIndex(1);
            }        catch (Exception ex)
            {
                this.lblMessage.Text = ex.Message;
            }
        }