我用datagrid第一列是模板列(放了一个单选按钮),第二、三列是按钮列(编辑和删除),后面是自动生成的数据列。
现在的情况是单击编辑以后,自动生成的数据列可以编辑,但是在后台的代码中用更新模块时,使用e.item.cells[i].text,总是取不到任何数值,都是空值!不知道是什么原因,请哪位大侠出手相救,谢谢!!!

解决方案 »

  1.   

    代码贴出来看看~~~~~====CSDN 小助手 V2.0 2005年10月16日发布====
    CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
    界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/10/16/504620.aspx
    下载:http://szlawbook.com/csdnv2/csdnv2.rar为神六喝彩,向所有科技工作者致敬!
    拒绝日货。
      

  2.   

    using System;
    using System.Configuration;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.OleDb;
    using System.Data.OracleClient;namespace iptvora
    {
    /// <summary>
    /// result 的摘要说明。
    /// </summary>
    public class searchResult : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.DataGrid DataGrid1;
    private int pageCount;
    protected System.Web.UI.WebControls.TextBox TextBox1;
     //总页数 
            private int recordCount;  //总记录数        private DataSet GetPageData(int pageSize, int pageIndex) 
            { 
                OracleConnection myConn=new OracleConnection(System.Configuration.ConfigurationSettings.AppSettings["oraConnStr"]); 
    myConn.Open();
    OracleCommand cmd=new OracleCommand();
    cmd.Connection=myConn;
    cmd.CommandText="pack_program_page.proc_program_getdatapage"; //参数为存储过程名 
                cmd.CommandType = CommandType.StoredProcedure;   //声明命令类型为存储过程             cmd.Parameters.Add("pageSize",OracleType.Number);
                cmd.Parameters["pageSize"].Direction=ParameterDirection.Input;
                cmd.Parameters["pageSize"].Value = pageSize; 
                cmd.Parameters.Add("pageIndex",OracleType.Number);
                cmd.Parameters["pageIndex"].Direction=ParameterDirection.Input;
                cmd.Parameters["pageIndex"].Value = pageIndex; 
                cmd.Parameters.Add("pageCount",OracleType.Number); 
                cmd.Parameters["pageCount"].Value = pageCount; 
                cmd.Parameters["pageCount"].Direction = ParameterDirection.Output;  //存储过程中的输出参数 
                cmd.Parameters.Add("recordCount",OracleType.Number); 
                cmd.Parameters["recordCount"].Value = recordCount; 
                cmd.Parameters["recordCount"].Direction = ParameterDirection.Output; //存储过程中的输出参数 
    cmd.Parameters.Add("recordOut",OracleType.Cursor);
    cmd.Parameters["recordOut"].Direction=ParameterDirection.Output;

    OracleDataAdapter myAdapter=new OracleDataAdapter(cmd);
                DataSet ds = new DataSet(); 
    myAdapter.Fill(ds);                      //获得输出参数值 
               pageCount = Convert.ToInt32(cmd.Parameters["pageCount"].Value); 
               recordCount = Convert.ToInt32(cmd.Parameters["recordCount"].Value); 
               myConn.Close(); 
       return ds; 

             
    //数据绑定
    private void BindDataGrid() 

    DataSet ds = (DataSet)this.GetPageData((int)this.DataGrid1.PageSize,(int)this.DataGrid1.CurrentPageIndex); 
    DataGrid1.VirtualItemCount = (int)recordCount; 
    DataGrid1.DataSource = ds; 
    DataGrid1.DataBind(); 

        //页面初始化
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    if(!Page.IsPostBack) 

    BindDataGrid(); 

    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.DataGrid1.ItemCreated += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemCreated);
    this.DataGrid1.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);
    this.DataGrid1.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_CancelCommand);
    this.DataGrid1.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_EditCommand);
    this.DataGrid1.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_UpdateCommand);
    this.DataGrid1.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_DeleteCommand);
    this.ID = "searchResult";
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion
            
    //用户翻页时事件处理
    private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    {
    DataGrid1.CurrentPageIndex = e.NewPageIndex; 
    BindDataGrid(); 
    }
            
    //用户单击取消按纽时事件处理
    private void DataGrid1_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    DataGrid1.EditItemIndex = -1;
    BindDataGrid();
    }
            
    //用户单击编辑按纽时事件处理
    private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    DataGrid1.EditItemIndex = e.Item.ItemIndex;
    BindDataGrid();
    } //用户单击更新按纽时事件处理
    private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    //OracleConnection conn=new OracleConnection(System.Configuration.ConfigurationSettings.AppSettings["oraConnStr"]);            
                //conn.Open();

                //string strSQL ="update program set title='"+e.Item.Cells[4].Text.ToString()+"' where id="+e.Item.Cells[3].Text.ToString();
                //OracleCommand cmd=conn.CreateCommand();
    //cmd.CommandText=strSQL; TextBox1.Text=e.Item.Cells[3].Text; //cmd.ExecuteNonQuery();
    //conn.Close(); //DataGrid1.EditItemIndex = -1;
    //BindDataGrid(); } //用户单击删除按纽时事件处理
    private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    OracleConnection conn=new OracleConnection(System.Configuration.ConfigurationSettings.AppSettings["oraConnStr"]);            
    conn.Open();
    OracleCommand command = new OracleCommand("proc_program_delete",conn);
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.Add("id",OracleType.Number);
    command.Parameters["id"].Value = DataGrid1.DataKeys[e.Item.ItemIndex];
    command.Parameters["id"].Direction=ParameterDirection.Input;
    command.ExecuteNonQuery();
    BindDataGrid(); } private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    // 在这里, e.Item返回的是当前创建行的对象 
    for(int i = 0; i < e.Item.Cells.Count; i++) 
    { // e.Item.Cells[x]是当前行中的单元格 
    if(i==6) continue;
    e.Item.Cells[i].Wrap = false; 
    }
    }
           }
    }
    这是所有后台的代码!谢谢