String colvalue = (TextBox)(e.Item.FindControl(cols[i])).Text;另外你的cols[i])你能保存和你的控件名是对应的吗??

解决方案 »

  1.   

    你跟踪一下看看你的e.Item.FindControl(cols[i])是否有这个控件存在。
      

  2.   

    visualcpu(我好烦!~~~~~) String colvalue = (TextBox)(e.Item.FindControl(cols[i])).Text;寫法是錯誤的,同時cols[i])你能保存和你的控件名是对应的 yohomonkey(ht):這個控件存在的,我設置斷點調試程序運行到這一行阿
    for (int i=0; i<3; i++)
    {
    String colvalue = ((TextBox)E.Item.FindControl(cols[i])).Text;
    myCommand.Parameters["@" + cols[i]].Value = colvalue;
    }
    就是這個,程序運行的
      

  3.   

    我把上面的那個myDataList_Update事件換成下面這個,打印出sql語句,顯示沒有得到TextBox的值,不知道位什嗎,打印出的Sql語句如下:UPDATE information SET compute_times = '', compute_hours = ' ', compute_content = '' myDataList_Update事件:public void myDataList_Update(Object sender, DataGridCommandEventArgs e)
    {
           if (Page.IsValid)
    {
    dbconn db=new dbconn();
    SqlConnection myConnection=new SqlConnection(dbconn.ConnectionString);
    TextBox compute_times;
             TextBox compute_hours;
    TextBox compute_content;
    compute_times=(TextBox)e.Item.FindControl("compute_times");
    compute_hours=(TextBox)e.Item.FindControl("compute_hours");
    compute_content=(TextBox)e.Item.FindControl("compute_content");
    String updateCmd = "UPDATE information SET compute_times = '"+ compute_times.Text +"', compute_hours = '" +compute_hours.Text +"', compute_content = '" +compute_content.Text +"'";
    Response.Write (updateCmd);   *****打印sql語句,結果見上面
    SqlCommand myCommand = new SqlCommand(updateCmd, myConnection);
    myCommand.Connection.Open();
    try
    {
    myCommand.ExecuteNonQuery(); myDataList.EditItemIndex = -1;
    }
    catch (SqlException E)
    {
             if (E.Number == 2627)
             Message.Text = "錯誤:已存在具有相同主鍵的紀錄";
             else
    Message.Text = "錯誤:未能更新紀錄,請确保正确填填了字段";
    Message.Style["color"] = "red";
    } myCommand.Connection.Close(); if(d==1)
    BindGrid(w-1);
    else if(d==5)
    BindGrid(w);
    }
    else
    {
    Message.Text = "錯誤:請檢查每個字段中的錯誤情況。";
    Message.Style["color"] = "red";
    }
    }