1. 设置DataGrid的EditItemIndex属性
2. 重新设置DataGrid的DataSource、执行DataGrid的DataBind方法
现在就可以使用EditItemTemplate里的控件了

解决方案 »

  1.   

    先对datagrid数据绑定,再访问
      

  2.   

    先DataBind
    访问用(CheckBox)datalist.Items[i].FindControl(checkBoxString)
      

  3.   

    给其赋值应该在DataBound中:例子如下:if(e.Item.ItemType==ListItemType.Item ||e.Item.ItemType==ListItemType.AlternatingItem)
    {
    if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
    {
    Label label=new Label();
    label=(Label)e.Item.Cells[5].FindControl("lbTime");
    if(label.Text==""||label.Text==null)
    label.Text="此处为空值";
    }
    }
      

  4.   

    ctype(e.item.cells(0).controls(0),textbox).text
    或者
    dim t as textbox
    t=e.item.findcontrol("textbox1")
      

  5.   

    谢谢热心的朋友!不过大家可能还不太明白我的意思。我在点击DataGrid中的某一行的“编辑”按钮时,触发这个按钮的处理函数,在这个函数中设置EditItemIndex。但此时设置为编辑的那一行好像还是处于原来的浏览状态,也就是说EditItemTemplate中的控件还没生成,我事先绑定也没用,大家有什么好办法吗?
      

  6.   

    在EditCommand事件处理函数中写
    e.Item.ItemIndex = -1
      

  7.   

    没那么麻烦吧!
    在HTML里
    <EditItemTemplate>
    <asp:TextBox id=TextBox2 runat="server" Width="111px" Text="初值">
    </asp:TextBox>
    </EditItemTemplate>
    也可以绑定数据或函数!!
      

  8.   

    楼上各位说的都是TextBox的情况。不过我这里用的是DropDownList,需要根据数据库里的数值来动态设置DropDownList中的List的默认选定项,比如,List的备选项为“已完成”和“未完成”,数据库里的某字段为“已完成”,则进入编辑状态时默认的选项就为“已完成”。通常应该在程序里设置,但刚进入编辑状态时我根本找不到这个DropDownList空间呀。
      

  9.   

    [C#]
    xx.aspx...
    <asp:TemplateColumn SortExpression="depName" HeaderText="单位名称">
      <ItemTemplate>
        <asp:Label Runat=server Text='<%# DataBinder.Eval(Container.DataItem,"depName")%>' ID="Label2" />
      </ItemTemplate>
      <EditItemTemplate>
        <asp:TextBox Runat=server Columns=12 id="edit_depname" Text='<%# DataBinder.Eval(Container.DataItem,"depName")%>' />
      </EditItemTemplate>
    </asp:TemplateColumn>xx.aspx.cs...
    /// <summary>
    /// 更新数据
    /// </summary>
    /// <param name="source"></param>
    /// <param name="e"></param>
    private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    string cmd = "Update depart set depname= @dep_name where depid = @id";
    SqlConnection conn = new SqlConnection(sql);
    SqlCommand comm = new SqlCommand(cmd,conn);

    // 新建参数
    comm.Parameters.Add(new SqlParameter("@id",SqlDbType.NVarChar,20));
    comm.Parameters.Add(new SqlParameter("@dep_name",SqlDbType.NVarChar,30));


    // 给参数赋值
    comm.Parameters["@id"].Value = DataGrid1.DataKeys[(int)e.Item.ItemIndex];
    comm.Parameters["@dep_name"].Value = ((TextBox)e.Item.FindControl("edit_depname")).Text;
    // 执行SQL语句
    try
    {
    conn.Open();
    comm.ExecuteNonQuery();
    conn.Close(); DataGrid1.EditItemIndex = -1;
    DataGridBind();
    Label1.Text = "Succeed!";
    }
    catch(SqlException ex)
    {
    Label1.Text = "Error:"+ ex.Message;
    }
     }