能不能做成这样,当在DataGrid中点击"编辑"按钮时,该编辑行就自动定位到第一行.更新后就正常了.
有没有类似的代码可以参考.
public void DataGrid1_Edit(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex = (int)e.Item.ItemIndex;
BindGridToSource();
}

解决方案 »

  1.   

    目前还没发现,这种方式好吗,可以自定义编辑方式,比如点击了编辑列,把隐藏在头部的pannel显示出来,同时把编辑列的值赋到相应的控件中,保存的时候再隐藏同时更新数据。
      

  2.   

    TO: happyfamily(FreeHorse) , 
    还是没看懂您的意思.能不能讲得详细点,谢谢了.
      

  3.   

    什么意思?难道你在某行点击编辑希望编辑其他的行???注意在绑定的时候要在Page_Load方法里添加下面的代码:
    if(!this.IspostBack){
    // databind code here
    }
      

  4.   

    private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {            
        DataGrid1.EditItemIndex = e.Item.ItemIndex;
        //获取该行的主键,X为可以标志该行的列
        strint strID = DataGrid1.Items[e.Item.ItemIndex].Cells[X].Text;
        //可以试试以下两种:
        string strID = DataGrid1.DataKeys[e.Item.ItemIndex].ToString(); 
        int getid = Convert.ToInt32(DataGrid1.DataKeys[e.Item.ItemIndex]);
        BindGridToSource (strID);
    }在BindGridToSource中,手动根据ID,把该行放到第一行就可以了。
      

  5.   

    TO: swordragon(古道热肠如何更改BindGridToSource???谢谢了.
    public void DataGrid1_Edit(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    DataGrid1.EditItemIndex = (int)e.Item.ItemIndex;

    string strID = DataGrid1.DataKeys[e.Item.ItemIndex].ToString(); 


    BindGridToSource(strID);
    }
    public void BindGridToSource()
    {

        string QUOTE_IDValue=this.CUID.Text;
    OracleConnection conn=new OracleConnection("Data Source=WK;user id=wk;password=yourpassword");
    string mySelectQuery = "SELECT NO,NAME,CAVITYNO,MATERIAL,T1DATE,PRICE_type,PRICE,MEMO,IMAGINE FROM quote where quote_id='"+QUOTE_IDValue+"' order by no";
    OracleDataAdapter myCommand = new OracleDataAdapter(mySelectQuery,conn);
    DataSet ds = new DataSet();
    myCommand.Fill(ds, "quote");
    this.DataGrid1.DataKeyField="NO";
    DataTable  myDt= ds.Tables["quote"];
    DataView dv = ds.Tables["quote"].DefaultView;;
    Session["MY_DATA"]=myDt;
    DataGrid1.DataSource = myDt;
    this.DataGrid1.DataBind();
    }

      

  6.   

    对不起,刚才开会去了。private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {            
        DataGrid1.EditItemIndex = 0;
        string strID = DataGrid1.DataKeys[e.Item.ItemIndex].ToString(); 
        BindGridToSource (strID);
    }在BindGridToSource中,手动根据ID,把该行放到第一行就可以了。
    public void BindGridToSource(string strID)
    {
        string QUOTE_IDValue=this.CUID.Text;
    OracleConnection conn=new OracleConnection("Data Source=WK;user id=wk;password=yourpassword");
        string mySelectQuery = "SELECT NO,NAME,CAVITYNO,MATERIAL,T1DATE,PRICE_type,PRICE,MEMO,IMAGINE FROM quote where quote_id='"+QUOTE_IDValue+"' order by no";
        OracleDataAdapter myCommand = new OracleDataAdapter(mySelectQuery,conn);
    DataSet ds = new DataSet();
    myCommand.Fill(ds, "quote");
    this.DataGrid1.DataKeyField="NO"; DataTable  myDt= ds.Tables["quote"];

    myDt.PrimaryKey = new DataColumn[]{dt.Columns["NO"]};
    DataRow dr = myDt.Rows.Find(strID);
    object[] ary = new object[myDt.Columns.Count];
        dr.ItemArray.CopyTo(ary,0);
        myDt.Rows.Remove(dr);
        myDt.ItemArray = ary;
        myDt.Rows.InsertAt(dr,0);

    //DataView dv = ds.Tables["quote"].DefaultView;; Session["MY_DATA"]=myDt;
    DataGrid1.DataSource = myDt;
    this.DataGrid1.DataBind();
    }
      

  7.   

    TO:swordragon(古道热肠) 
    系统提示如下错误,能否帮忙再看看.
    正在准备资源...
    正在更新引用...
    正在执行主编译...
    c:\wk\webapplicationcsharp\new_mould.aspx.cs(344,39): error CS0246: 找不到类型或命名空间名称“dt”(是否缺少 using 指令或程序集引用?)
    c:\wk\webapplicationcsharp\new_mould.aspx.cs(349,4): error CS0117: “System.Data.DataTable”并不包含对“ItemArray”的定义
      

  8.   

    public void BindGridToSource(string strID)
    {
        string QUOTE_IDValue=this.CUID.Text;
    OracleConnection conn=new OracleConnection("Data Source=WK;user id=wk;password=yourpassword");
        string mySelectQuery = "SELECT NO,NAME,CAVITYNO,MATERIAL,T1DATE,PRICE_type,PRICE,MEMO,IMAGINE FROM quote where quote_id='"+QUOTE_IDValue+"' order by no";
        OracleDataAdapter myCommand = new OracleDataAdapter(mySelectQuery,conn);
    DataSet ds = new DataSet();
    myCommand.Fill(ds, "quote");
    this.DataGrid1.DataKeyField="NO"; DataTable  myDt= ds.Tables["quote"];

    myDt.PrimaryKey = new DataColumn[]{myDt.Columns["NO"]};
    DataRow dr = myDt.Rows.Find(strID);
    object[] ary = new object[myDt.Columns.Count];
        dr.ItemArray.CopyTo(ary,0);
        myDt.Rows.Remove(dr);
        dr.ItemArray = ary;
        myDt.Rows.InsertAt(dr,0);

    //DataView dv = ds.Tables["quote"].DefaultView;; Session["MY_DATA"]=myDt;
    DataGrid1.DataSource = myDt;
    this.DataGrid1.DataBind();
    }