能不能做成这样,当在DataGrid中点击"编辑"按钮时,该编辑行就自动定位到第一行.更新后就正常了.
有没有类似的代码可以参考.
public void DataGrid1_Edit(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex = (int)e.Item.ItemIndex;
BindGridToSource();
}
有没有类似的代码可以参考.
public void DataGrid1_Edit(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex = (int)e.Item.ItemIndex;
BindGridToSource();
}
还是没看懂您的意思.能不能讲得详细点,谢谢了.
if(!this.IspostBack){
// databind code here
}
{
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,把该行放到第一行就可以了。
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();
}
{
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();
}
系统提示如下错误,能否帮忙再看看.
正在准备资源...
正在更新引用...
正在执行主编译...
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”的定义
{
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();
}