我这里所说的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做法不能满足我的需要。大家看看,帮我在此基础上可有好的办法完善下,或者是否有真正的删除行的方法;如果有别的思路可以达到目的也行。上面的代码没放详细的注释了,大家应该能看的懂。
{
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做法不能满足我的需要。大家看看,帮我在此基础上可有好的办法完善下,或者是否有真正的删除行的方法;如果有别的思路可以达到目的也行。上面的代码没放详细的注释了,大家应该能看的懂。
解决方案 »
- 友情链接问题
- 网站迁移后Response.Redirect跳转错误
- iis 网站放上去连不上 过段时间后又正常了
- 关于onload事件的问题
- 无法将类型“object”隐式转换为“System.Data.SqlClient.SqlDataReader”?求9
- 页面上动态创建控件,如何关联其事件,请教大家
- 请问:如何可以下载到asp.net开发的一些论坛或者新闻发布的源代码?
- Net.Mail发送邮件,附件变成了乱码(dat文件)
- dropdownlist如何在刷新页面后恢复到第一项?
- 只能输入数字及字母,且输入字符位数为8位的正则表达式
- <%# 用DataList绑定链接的时候会比那些不是绑定的链接的行间距要宽,,,,请问要怎和解决
- 我给别人发送数据,别人成功接受就用Response.Write("0")表示,我怎么去获取呢?
/// 进行删除时事件 /// </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;
}
}