怎么实现GridView编辑、取消、更新和删除功能

shw2007141217 2010-06-01 05:29:56
在VS2008下, GridView的数据源是通过调用业务对象来动态绑定的,我想通过点击GridView控件中“编辑”按钮,触发RowUpdting事件,实现修改当前行的数据,或者说是点击该按钮时,弹出一个无边框窗体来达到这个目的;同理,点击“删除”按钮时,触发RowDeleting事件,通过调用存储过程来实现删除的功能,在删除之前弹出对话框提醒用户“确定要删除吗?”,最后提示“删除成功”,反之“删除失败”,还请各路高手指点迷津!
...全文
998 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
bbb332 2010-07-20
  • 打赏
  • 举报
回复
 /// <summary>
/// 绑定数据源
/// </summary>
public void bind()
{
SqlConnection con = new SqlConnection();
DB.getCon(ref con);
string sql = "select * from picture";
SqlCommand com = new SqlCommand(sql, con);
SqlDataAdapter da = new SqlDataAdapter(com);
DataSet ds = new DataSet();
da.Fill(ds, "picture");
GridView1.DataSource = ds;
GridView1.DataKeyNames = new string[] { "id" };//主键
GridView1.DataBind();
//实现用“...”代替超长字符串
for (int i = 0; i < GridView1.Rows.Count; i++)
{
DataRowView dv;
string gIntro;
if (GridView1.PageIndex == 0)
{
dv = ds.Tables["picture"].DefaultView[i];
gIntro = Convert.ToString(dv["image_size"]);
GridView1.Rows[i].Cells[2].Text = SubStr(gIntro, 1);
}
else
{
dv = ds.Tables["picture"].DefaultView[i + (5 * GridView1.PageIndex)];
gIntro = Convert.ToString(dv["image_size"]);
GridView1.Rows[i].Cells[2].Text = SubStr(gIntro, 1);
}

}
con.Close();
GridView1.Columns[5].Visible = !GridView1.Columns[5].Visible;

}
public string SubStr(string s, int len)
{
if (s.Length <= len)
return s;
string snew = s.Substring(0, len);
snew = snew + "...";
return snew;
}
/// <summary>
/// 编辑
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
bind();
}
/// <summary>
/// 删除
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string sqlstr = "delete from picture where id =" + GridView1.DataKeys[e.RowIndex].Value.ToString();
SqlConnection con = new SqlConnection();
DB.getCon(ref con);
SqlCommand com = new SqlCommand(sqlstr, con);
con.Open();
com.ExecuteNonQuery();
con.Close();
bind();
}
/// <summary>
/// 更新
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string sqlstr = "update picture set ip='"
+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim()
+ "' where id=" + GridView1.DataKeys[e.RowIndex].Value.ToString();
SqlConnection con = new SqlConnection();
DB.getCon(ref con);
SqlCommand com = new SqlCommand(sqlstr, con);
con.Open();
com.ExecuteNonQuery();
con.Close();
GridView1.EditIndex = -1;
bind();
}
/// <summary>
/// 取消
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
bind();
}
/// <summary>
/// 选择
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void CheckBox2_CheckedChanged(object sender, EventArgs e)
{
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("cb1");
if (true == CheckBox2.Checked)
cbox.Checked = true;
else
cbox.Checked = false;
}
}
/// <summary>
/// 取消
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < GridView1.Rows.Count; i++)
{
CheckBox cb = (CheckBox ) GridView1.Rows[i].FindControl("cb1");
cb.Checked = false;
}
shw2007141217 2010-07-20
  • 打赏
  • 举报
回复
谢谢各位位的指导,这些功能现在已经成功的实现了!
wuyq11 2010-06-01
  • 打赏
  • 举报
回复
<asp:TemplateField HeaderText="操作" ItemStyle-HorizontalAlign="Center" ShowHeader="False">
<HeaderStyle Width="20%"></HeaderStyle>
<EditItemTemplate>
<asp:LinkButton ID="LinkButton5" runat="server" CausesValidation="True" CommandName="update">保存</asp:LinkButton>
<asp:LinkButton ID="LinkButton4" runat="server" CausesValidation="False" CommandName="cancel">取消</asp:LinkButton>
</EditItemTemplate>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="edit" CausesValidation="false" OnClientClick="return confirm('确认要编辑吗?');">编辑</asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CommandName="delete" CausesValidation="False" OnClientClick="return confirm('确认要删除吗?');">删除</asp:LinkButton>
<asp:LinkButton ID="LinkButton3" runat="server" CommandName="Select" CausesValidation="False" Visible="false" >选取</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
protected void gv_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
BindData();
}

protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
{
this.gv.EditIndex = e.NewEditIndex;
BindData();
}

protected void gv_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
this.gv.EditIndex = e.RowIndex;
int id = int.Parse(this.gv.DataKeys[e.RowIndex].Value.ToString());

this.gv.EditIndex = -1;
BindData();
}

protected void gv_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
gv.EditIndex = -1;
BindData();
}
hjw01592 2010-06-01
  • 打赏
  • 举报
回复
这篇文章已经讲的非常清楚了。
http://blog.csdn.net/21aspnet/archive/2007/03/25/1540301.aspx
  • 打赏
  • 举报
回复

<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand">
<Columns>
<asp:ButtonField CommandName="delete" Text="删除" />
<asp:ButtonField CommandName="update" Text="修改" />
<asp:ButtonField CommandName="add" Text="添加" />
</Columns>
</asp:GridView>



protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if(e.CommandName=="delete")
{
//do delete
}else if(e.CommandName=="update")
{
//do update
}else if(e.CommandName=="add")
{
//do add
}
}
moonwrite 2010-06-01
  • 打赏
  • 举报
回复
http://blog.csdn.net/21aspnet/archive/2007/03/25/1540301.aspx
huangmin3956 2010-06-01
  • 打赏
  • 举报
回复
思路很清晰 楼主问什么 友情帮顶

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧