问题一: 我在模板中自定义了四个按钮,想通过按钮的click事件获得所在行的主键值!
问题二:我在模板中有一个编辑按钮,我单击编辑时怎么调出EditItemTemplate模板?

解决方案 »

  1.   

    在顶~,问题二以解决,问题二是qq上一朋友告诉偶的。方法是设置模板里编辑按钮的CommandName属性为edit,调用edit事件,设按钮的UseSubmitBehavior=False
    但问题三出来了:(
    进入编辑模板后,找不到编辑模板里的控件!
    我在编辑模板里有两个控件,一个TextBox,一个Button,
    protected void btnSub_Click(object sender, EventArgs e)
        {
            TextBox txtContent = (TextBox)gvDiary.FindControl("txtContent");
            txtContent.Text  = "sss"; 
        }
    总是说在这句报错txtContent.Text  = "sss"; 
    未将对象引用设置到对象的实例。
    请问怎么解决?
      

  2.   

    第二点还要在
    protected void gvDiary_RowEditing(object sender, GridViewEditEventArgs e)
        {
            gvDiary.EditIndex = e.NewEditIndex;
            gvDiary.DataSource = dc.TempView();
            gvDiary.DataBind();
        }
    就搞定。
      

  3.   

    TextBox txtContent = (TextBox)gvDiary.FindControl("txtContent");
    在这里头错了.
    foreach (GridViewRow row in GridView1.Rows)
            {
     
    TextBox txtContent = (TextBox)row.FindControl("txtContent");
          }
    就ok了........解决了别忘了给分!
      

  4.   

    2,3问题是解决了,第一个问题还没搞定啦!
    问题一: 我在模板中自定义了四个按钮,想通过按钮的click事件获得所在行的主键值!
      

  5.   

    那你在rowcamd事件里写.
    protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if(e.CommandName =="你的按钮的comandname")
            {
               int index = Convert.ToInt32(e.CommandArgument);
              string ss = GridView2.DataKeys[index].Value.ToString();
          
     
            
        }
      

  6.   

    commandname设置一下,在rowcommand中获取commandname后用下边的代码获取主键值:
    gridview1.rows[e.rowindex].cell[?].text
    ?主键所在列的索引,第一列从0开始计算,自己数一下
      

  7.   

    gridview1.rows[e.rowindex].cells[?].text