public void OnExit(object sender,DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex=-1;
DisPlayData(); }
public void OnEdit(object sender,DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex=(int)e.Item.ItemIndex;
DisPlayData();
}
public void OnUpdata(object sender,DataGridCommandEventArgs e)
{
if(e.Item.ItemType==ListItemType.EditItem||e.Item.ItemType==ListItemType.AlternatingItem)
{
//Response.Write("<script>alert(e.Item.Cells[1].Controls[0].GetType());</script>");

TextBox bynamekey=(TextBox)e.Item.Cells[1].Controls[0];
TextBox agekey=(TextBox)e.Item.Cells[2].Controls[0];
TextBox postnumberkey=(TextBox)e.Item.Cells[3].Controls[0];
TextBox adresskey=(TextBox)e.Item.Cells[4].Controls[0];
if(bynamekey!=null&&agekey!=null&&postnumberkey!=null&&adresskey!=null)
{
string bynametext=Convert.ToString(bynamekey.Text);
int agetext=Convert.ToInt32(agekey.Text);
string postnumbertext=Convert.ToString(postnumberkey.Text);
string adresstext=Convert.ToString(adresskey.Text);
DataGrid1.EditItemIndex=-1;
NextClass(bynametext,agetext,postnumbertext,adresstext,e.Item.Cells[0].Text.Trim());
DataSet ds=new DataSet();
DataGrid1.DataSource=ds.Tables["OnUpdata"];
DataGrid1.DataBind();
DisPlayData();
}
}
}
public void NextClass(string bynametext,int agetext,string postnumbertext,string adresstext,string celss)
{
SqlConnection conn=new SqlConnection("server=shuaishuai;uid=sa;pwd=1;database=shuaishuai");
SqlDataAdapter da=new SqlDataAdapter("select * from test",conn);
DataSet ds=new DataSet();
da.Fill(ds,"NextClassdata");
DataTable dt=ds.Tables["NextClassdata"];
dt.PrimaryKey=new DataColumn[]{dt.Columns["Fullname"]};
object []KeyValues=new Object[1];
KeyValues[0]=celss;
DataRow row=dt.Rows.Find(KeyValues);
row["byname"]=bynametext;
row["age"]=agetext;
row["postnumber"]=postnumbertext;
row["address"]=adresstext;
SqlCommandBuilder cd=new SqlCommandBuilder(da);
da.Update(ds,"NextClassdata");
} public void DisPlayData()
{
Project1.shuaishuai display=new Project1.shuaishuai();
DataGrid1.DataSource=(DataSet)display.show();
DataGrid1.DataBind();
}

public void OnDelete(object sender,System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
SqlConnection conn=new SqlConnection("server=shuaishuai;pwd=1;uid=sa;database=shuaishuai");
SqlCommand cmd=new SqlCommand("delete from test where Fullname='"+e.Item.Cells[0].Text.Trim()+"'",conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
DataGrid1.EditItemIndex = -1;
DisPlayData();
} }
}

解决方案 »

  1.   

    两个按钮不是datagrid里的,
    而是放在datagrid外面的
      

  2.   

    用DataGrid的EditItemIndex只能是一行数据的编辑要想多行就要用模板列实现.1.在DataGrid添加模板列
    2.编辑模板列在ItemTemplate里放一个TextBox和Label
    3.在后台的ItemDataBound里设置TextBox的Visible为false,Label的Visible为True
      同时给TextBox和Label赋值.
    4.在修改Button的OnClick事件里再设置TextBox和Label的Visible
    5.在保存Button的OnClick事件里循环DataGrid的行取出TextBox的值将数据入库
      

  3.   

    我想要的效果是从数据库中取数据到TextBox里面,然后修改,然后一键提交!
    哪位兄弟给点代码示例呀?不胜感激!
    或者发到我的信箱里面!