当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 我在panel上放了各种控件(如tbutton、tedit),我如何把他们(指放在panel上的控件,不在panel上的不算)找出来?我记得好象以前有一个findcomponent的方法,不知道行不行,请高手指点。 ......
 ·win2000有传真功能吗    »显示摘要«
    摘要: 我在win2000想安装传真软件,但怎么也找不着它在哪,是不是要安装第三方软件? ......


哪位老大帮我看看,这短程序。调试的时候有两个错误不知道怎么修改在线给分

错误如下  
  索引超出范围。必须为非负值并小于集合大小。参数名:   index    
  说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。    
   
  异常详细信息:   System.ArgumentOutOfRangeException:   索引超出范围。必须为非负值并小于集合大小。参数名:   index  
  行   51:   SqlCommand   myCommand   =   new   SqlCommand(updateCmd,   myConnection);  
  行   52:   myCommand.Parameters.Add(new   SqlParameter("@Id",   SqlDbType.Int,   4));  
  行   53:   myCommand.Parameters.Add(new   SqlParameter("@Title",   SqlDbType.NVarChar,   100));  
  行   54:   myCommand.Parameters.Add(new   SqlParameter("@Author",   SqlDbType.NVarChar,   50));  
  行   55:   myCommand.Parameters["@Id"].Value   =   DataGrid1.DataKeys[(int)E.Item.ItemIndex];  
  源文件:   e:\asp\music\admin\updata.aspx.cs         行:   53    
   
     
   
  using   System;  
  using   System.Globalization   ;  
  using   System.Collections;  
  using   System.ComponentModel;  
  using   System.Data;  
  using   System.Data.SqlClient;  
  using   System.Drawing;  
  using   System.Web;  
  using   Acme;  
  using   System.Web.SessionState;  
  using   System.Web.UI;  
  using   System.Web.UI.WebControls;  
  using   System.Web.UI.HtmlControls;  
   
  namespace   Music.admin  
  {  
  ///   <summary>  
  ///   updata   的摘要说明。  
  ///   </summary>  
  public   class   updata   :   System.Web.UI.Page  
  {  
  protected   System.Web.UI.WebControls.DataGrid   DataGrid1;  
  protected   System.Web.UI.WebControls.Label   Label1;  
  protected   System.Web.UI.WebControls.TextBox   TextBox1;  
  protected   System.Web.UI.HtmlControls.HtmlGenericControl   Message;  
  public     SqlConnection   myConnection;  
     
   
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  //   在此处放置用户代码以初始化页面  
  myConnection=new   SqlConnection("server=localhost;uid=sa;pwd=12278082;database=music");  
  if(!IsPostBack)  
  BindGrid();  
   
  }  
  public   void   DataGrid1_Edit(object   sender,DataGridCommandEventArgs   E)  
  {  
  DataGrid1.EditItemIndex=(int)E.Item.ItemIndex;  
  BindGrid();  
  }  
  public   void   DataGrid1_Cancel(object   sender,   DataGridCommandEventArgs   E)  
  {  
  DataGrid1.EditItemIndex   =   -1;  
  BindGrid();  
  }  
  public   void   DataGrid1_Update(object   sender,   DataGridCommandEventArgs   E)  
  {  
  string   updateCmd   =   "UPDATE   musics   SET   id   =   @Id,   title=   @Title,   author   =   @Author,";  
   
  SqlCommand   myCommand   =   new   SqlCommand(updateCmd,   myConnection);  
  myCommand.Parameters.Add(new   SqlParameter("@Id",   SqlDbType.Int,   4));  
  myCommand.Parameters.Add(new   SqlParameter("@Title",   SqlDbType.NVarChar,   100));  
  myCommand.Parameters.Add(new   SqlParameter("@Author",   SqlDbType.NVarChar,   50));  
  myCommand.Parameters["@Id"].Value   =   DataGrid1.DataKeys[(int)E.Item.ItemIndex];  
  String[]   cols   =   {"@Id","@Title","@Author",};  
  Message.InnerHtml   =   "";  
  int   numCols   =   E.Item.Cells.Count;  
  for   (int   i=2;   i<numCols-1;   i++)   //skip   first,   second   and   last   column  
  {  
  String   colvalue   =((System.Web.UI.WebControls.TextBox)  
  E.Item.Cells[i].Controls[0]).Text;  
   
  //   check   for   invalid   values  
  switch   (cols[i-1])  
  {  
  case   "@Title":  
  if   (   !InputValidator.IsValidAnsiName(colvalue)   )  
  {  
  Message.InnerHtml   +=   "ERROR:   Last   Name   -   "   +   InputValidator.AnsiNameErrorString   +   "<br>";  
  }  
  break;  
  case   "@Author":  
  if   (   !InputValidator.IsValidAnsiName(colvalue)   )  
  {  
  Message.InnerHtml   +=   "ERROR:   First   Name   -   "   +   InputValidator.AnsiNameErrorString   +   "<br>";  
  }  
  break;  
   
  }  
  if   (i<6   &&   colvalue   ==   "")  
  {  
  Message.InnerHtml   +=   "ERROR:   Null   values   not   allowed   for   "   +   cols[i-1]   +   "<br>";  
  }  
   
  myCommand.Parameters[cols[i-1]].Value   =   colvalue;  
  }  
   
  if   (   Message.InnerHtml   !=   ""   )  
  {  
  Message.Style["color"]   =   "red";  
  return;  
  }  
   
  //append   last   row,   converting   true/false   values   to   0/1  
  if   (String.Compare(((System.Web.UI.WebControls.TextBox)  
  E.Item.Cells[numCols-1].Controls[0]).Text,   "true",   true,   CultureInfo.InvariantCulture)==0)  
  myCommand.Parameters["@Contract"].Value   =     "1";    
  else  
  myCommand.Parameters["@Contract"].Value   =     "0";    
   
  myCommand.Connection.Open();  
   
  try    
  {  
  myCommand.ExecuteNonQuery();  
  Message.InnerHtml   =   "<b>Record   Updated</b><br>"   +   updateCmd;  
  DataGrid1.EditItemIndex   =   -1;  
  }  
  catch   (SqlException   e)  
  {  
  if   (e.Number   ==   2627)  
  Message.InnerHtml   =   "ERROR:   A   record   already   exists   with   the   same   primary   key";  
  else  
  Message.InnerHtml   =   "ERROR:   Could   not   update   record,   please   ensure   the   fields   are   correctly   filled   out";  
  Message.Style["color"]   =   "red";  
  }  
   
  myCommand.Connection.Close();  
   
  BindGrid();  
   
   
   
   
   
   
  }

NO.1   作者: shitingzhao

string   updateCmd   =   "UPDATE   musics   SET   id   =   @Id,   title=   @Title,   author   =   @Author,";  
  多了一个逗号!应为:  
  string   updateCmd   =   "UPDATE   musics   SET   id   =   @Id,   title=   @Title,   author   =   @Author";  
 

NO.2   作者: llm2002

什么情况下提示错误!

NO.3   作者: shitingzhao

参看:QuickStart:  
  http://localhost/quickstart/util/srcview.aspx?path=/quickstart/aspplus/samples/webforms/data/datagrid6.src

NO.4   作者: webdiyer

把   switch   (cols[i-1])   改成   switch   (cols[i-2])   再试试。另外你的SQL语句也是错的,就算能执行,也是把所有记录的id、title和author都更新了。  
   
  --------------------------------  
  AspNetPager   免费分页控件4.2版发布,同时发布最新源代码,欢迎下载:http://www.webdiyer.com

NO.5   作者: cnhgj

加DataGrid1.EditItemIndex   =   e.Item.ItemIndex试试


    摘要: 看来大家的倒分水平还待提高阿! ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE