今天解决了2个问题。。开心死了。。真的感觉在这里得到大家的帮助太感激了。。
先谢谢大家给小弟的帮助了
这里还有个问题要麻烦大家了。。
我模板列用了一个button来删除这行。。
我也给button设置了commondname属性。
那删除事件的代码肯定要写在GridView1_RowCommand这个方法里面了啊。。
但是我得不到改行的第一列的ID值。这个方法传进去的参数e是GridViewCommandEventArgs
得不到改行第一列的text文本值。。
那我该怎么写啊
向大家请教了。。麻烦大家了。。谢谢。。

解决方案 »

  1.   

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "OK")
        {
            int index = ((GridViewRow)((Button)e.CommandSource).NamingContainer).RowIndex;
            string str = GridView1.Rows[index].Cells[0].Text;        //通过下面的方式找到当前行主键
            string id = GridView1.DataKeys[index].Value.ToString();        //然后做你的数据库操作
        }
    }
      

  2.   

    DataKeys[e.RowsIndex] 好像是这样的,这个代码不知道我写对没有 (设置DataKeys)
      

  3.   

    但既然你是删除操作,整个按钮的CommandName应该是delete才对,最好在RowDeleting事件中操作    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            string str = GridView1.Rows[e.RowIndex].Cells[0].Text;
        }
      

  4.   

    一般是在RowCreated里面给CommandArgument 赋值
    if (e.Row.RowType == DataControlRowType.DataRow)
             {
                 Button addButton = (Button)e.Row.Cells[0].Controls[0];
                 addButton.CommandArgument = e.Row.RowIndex.ToString();
             }
    再在GridView1_RowCommand取出来
    if (e.CommandName=="your command name"
             {
                 int index = Convert.ToInt32(e.CommandArgument);
                 GridViewRow row =user_gv.Rows[index];//找到选中的行
             }
    不过你用模板列的话估计不行
    做删除最好用girdview外面的button,结合gridview里面的chechbox来删除,根据checkbox的选中情况来批量进行删除