代码如下:
private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
String day = e.Item.Cells[0].Text;
string datetime = String.Format("{0}-{1}-{2}",today.Year, today.Month, day );
if(e.CommandName=="edit")
{
this.DataGrid1.EditItemIndex=e.Item.ItemIndex;
this.bind();
}
if(e.CommandName=="update")
{
try
{
SqlCommand comm=new SqlCommand("update SEMonthTable set RunTimes=@RunTimes, ConstringeTimes=@ConstringeTimes, RunTotalSeconds=@RunTotalSeconds where MDatetime = @Datetime",connect);

SqlParameter parm1=new SqlParameter("@RunTimes",SqlDbType.Float);
parm1.Value=e.Item.Cells[1].Text;
parm1.Value=((TextBox)e.Item.Cells[1].Controls[0]).Text;
SqlParameter parm2=new SqlParameter("@ConstringeTimes",SqlDbType.Float);
parm2.Value=((TextBox)e.Item.Cells[2].Controls[0]).Text;
SqlParameter parm6=new SqlParameter("@RunTotalSeconds",SqlDbType.Float);
parm6.Value=((TextBox)e.Item.Cells[6].Controls[0]).Text;
SqlParameter parm7=new SqlParameter("@Datetime",SqlDbType.DateTime);
parm7.Value= datetime;

comm.Parameters.Add(parm1);
comm.Parameters.Add(parm2);
comm.Parameters.Add(parm6);
comm.Parameters.Add(parm7);
connect.Open();
comm.ExecuteNonQuery();
connect.Close();
}
catch
{
Response.Write("<script>alert('输入的数据格式有误');</script>");
}
finally
{
this.DataGrid1.EditItemIndex=-1;
connect.Close();
this.bind();
}
}
}
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
e.Item.Attributes.Add("onclick","__doPostBack('"+((LinkButton)e.Item.Cells[7].Controls[0]).ClientID.Replace("__","$_")+"','')");
}
if(e.Item.ItemType==ListItemType.EditItem)
{
e.Item.Attributes.Add("ondblclick","__doPostBack('"+((LinkButton)e.Item.Cells[8].Controls[0]).ClientID.Replace("__","$_")+"','')");
for(int i=1;i<6;i++)((TextBox)e.Item.Cells[i].Controls[0]).Attributes.Add("onmouseover","this.select()");
}
}

解决方案 »

  1.   

    检查下是不是你转换的列的控件是textbox类型
      

  2.   

    TextBox txt = (TextBox)e.Item.Cells[1].Controls[0];
    TextBox txt2 = (TextBox)e.Item.Cells[6].Controls[0];
    看看这两个txt ,txt2  是不是存在
      

  3.   

    刚才看了,是TextBox定义有异议,我在搬用其他的界面时把using System.Windows.Forms引用了;删了就好了,可是怎么取不到编辑的值啊,就是parm1.Value=((TextBox)e.Item.Cells[1].Controls[0]).Text;还是原来的datagrid的值不是编辑的值
      

  4.   

    我倒using System.Windows.Forms!!
    可是怎么取不到编辑的值啊,就是parm1.Value=((TextBox)e.Item.Cells[1].Controls[0]).Text;还是原来的datagrid的值不是编辑的值
    》》绑定放到if(!IsPostBack)
      

  5.   

    把绑定放到if(!IsPostBack)里面就编辑不了啦
      

  6.   

    编辑的问题解决了,可是还有一个状态不理想
    就是datagrid在编辑状态下列宽改变太大,很容易产生错误的感觉
    怎么让datagrid在编辑状态的列宽和不是编辑的时候保持一致?
      

  7.   

    谁帮我看看编辑状态下如何设置列宽,我的dataGrid中有一项按钮模板列,在编辑的时候这一列是缩小的很窄,不是按百分比来显示的,那位高人还有好的办法啊,解决后马上结帖~~~