Billpeng Space

技术源自生活
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在GridView中自定按钮,实现删除和更新

Posted on 2008-11-11 16:24  billpeng  阅读(555)  评论(0编辑  收藏  举报

用的都是笨办法,看了二个小时看搞明白
本来算删除和更新都用RowCommand来实现的,后来发现,在RowCommand中无法取到自定的输入框中的值,只得把更新换到RowUpdating中去实现了,但RowUpdating中又没有CommandArgument属性,只好放一个HiddenField来做参数存储。实属无奈,不知道好用的方法应该是怎么样,有没有高手可以指点指点
在GridView中操作数据方法:
1.删除:

     在模版中建一个Button,设置其CommandType="del"、CommandArgument="<%#Eval("ID")%>"
     在GridView的RowCommand事件中判断CommandType,以CommandArgument为参数删除数据

2.更新:

     在模版中建一个Button,设置其CommandType="update"
     建一个HiddenField,设置为Value="<%#Eval("ID")%>"
     在GridView的Rowupdating事件中,先用e.RowIndex找到当前行的索引,然后用FindControl取到值,更新

3.更新2:

     另一个方法:在“编辑”按钮的CommandArgument中写<%# ((GridViewRow) Container).RowIndex %>
     在GridView的RowCommand事件中,就可以使用CommandArgument来获取当前行的索引,然后处理。
     以下代码中还没有使用这种方法来实现

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    
{
        
if (e.CommandName == "del")
        
{
            
int index = Convert.ToInt32(e.CommandArgument);
            
string sqlcmd = "delete from Admin where id =" + index;
            userSql.db.ExecuteNonQuery(sqlcmd);
            DataBinded();
        }

    }

    
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    
{
        
int index2 = e.RowIndex;
        
string txtName = ((TextBox)this.GridView1.Rows[index2].Cells[2].FindControl("txtAdminname")).Text;
        
string txtPass = ((TextBox)this.GridView1.Rows[index2].Cells[2].FindControl("txtAdminPassword")).Text;
        
int id = Convert.ToInt32(((HiddenField)this.GridView1.Rows[index2].Cells[2].FindControl("HiddenID")).Value);
        
string sqlcmd = "update [Admin] set [Adminname]=@Adminname,[AdminPassword]=@AdminPassowrd where [id]=@id";
        SqlParameter[] param 
= {
            
new SqlParameter("@Adminname",txtName),
            
new SqlParameter("@AdminPassowrd",txtPass),
            
new SqlParameter("@id",id),
        }
;
        userSql.db.ExecuteNonQuery(sqlcmd, param);
        DataBinded();
    }