在MSDN有一篇文章专门讲在页面间传递参数的问题。http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconpassingservercontrolvaluesbetweenpages.asp

解决方案 »

  1.   

    推荐后置代码
    asp时代的方法不可取
      

  2.   

    我想,或许是你的DATATABLE里面根本没有获取到记录,那样在位置0处自然就没有任何行了。你可以试一下先判断TABLE里面有没有记录,有记录再执行下面的程序,没有就终止。也许就是这样的原因。
      

  3.   

    错误信息就是
    //==================错误在下面,点击按钮出错,异常详细信息: System.IndexOutOfRangeException: 在位置 0 处没有任何行。=========     if(Request.Form["SubMitdel"]!=null && Request.Form["SubMitdel"]!="")//就是这里
      

  4.   

    Wolfyee(肥牛火锅) 
    你说的对,就是没有记录,因为我的sql语句里有where=?
    上面的参数没有值,所以我的?就没有值,因此出错。
      

  5.   

    xhan2000(popeye.net) 
    推荐后置代码
    asp时代的方法不可取
    我也不想呀,有人叫我必须写前面。
      

  6.   

    这是你完整的代码吗?
    应该把代码加到Page_Load(object sender, System.EventArgs e)函数里面
      

  7.   

    ameng_2002(星星之火) 
    完整,如果我只写
    <%@ Page language="c#"%>
    <%@ Import Namespace="System" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.SqlClient"%>
    <HTML>
    <HEAD>
    <title>del.aspx</title>
    </HEAD>
    <body>
    <%
        string strId = Request.QueryString["id"];
        if(Request.Form["SubMitdel"]!=null && Request.Form["SubMitdel"]!="")
    {
    string errorstr;
                 string willpostid = Request.Form["myID"];
         Response.Write(willpostid);

    //打开数据连接
     string strconn="data source=lyl;initial catalog=ly;user id=sa;password=";
    SqlConnection myconn=new SqlConnection(strconn); myconn.Open();
    SqlCommand mydelcomm=new SqlCommand();
    try {
    //组织sql语句并执行修改
    mydelcomm.CommandText="DELETE FROM Table1 where id = "
    +"'"+ willpostid +"'";
    mydelcomm.Connection = myconn;
    mydelcomm.ExecuteNonQuery();
    }
    catch(Exception e)
    {
    //失败返回false
    errorstr=e.Message.ToString();
    Context.Response.Write(errorstr);
    myconn.Close();
    }
    //断开数据库连接,返回true
    myconn.Close();
    }


    %>上面的,可以根据上一页面传来的参数删除参数值相关的纪录。
      

  8.   

    可能因为是你上面的Page.IsPostBack的缘故吧,试试将代码加到
    Page_Load(object sender, System.EventArgs e)函数里面
      

  9.   

    SubMitdel是什么东西?是上个页面传过来来得参数??
    如果是的话,可能这个值丢失了,你在page.load中把他取出来并保存在session之类的地方。
      

  10.   

    jieyh(无影无形)
    SubMitdel 是我的删除按钮的name
      

  11.   

    ameng_2002(星星之火)
    Page_Load(object sender, System.EventArgs e)
    我该写在哪里
      

  12.   

    <%@ Page language="c#"%>
    <%@ Import Namespace="System" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.SqlClient"%>
    <%@ Import Namespace="MyLibrary"%>
    <script language="VB",runat="server">
    Sub Page_Load(Sender As Object,E As EventsArgs)
      ....//你的代码
    End Sub
      

  13.   

    如果你的数据是由于页面的postback,而被初始化清空的话,
    我建议你用ViewState("someName")视图状态!ViewState("someName")视图状态,可以保存在多次页面postback后,保存数据的!谢谢!!!
      

  14.   

    你的错误在于:在web页面的多次postback中,dataset也会跟着web面的多次postback,而被多次初始化!dataset里的table也被初始化了!table就被清空了,自然,table的0列没有任何的数据!
      

  15.   

    你的错误在于:在web页面的多次postback中,dataset也会跟着web面的多次postback,而被多次初始化!dataset里的table也被初始化了!table就被清空了,自然,table的0列没有任何的数据!
      

  16.   

    imports(小鸡快跑!) 
    你总算来了,我是不好意思再麻烦你,我知道我的错误是如何产生的,就是不知道怎么去解决。
    除了 !IsPostBack我不知道些什么可以完成这些功能,但是写了!IsPostBack以后,我又不知道那些东西需要写在!IsPostBack里面了
      

  17.   

    错误在于:
    提交完页面的时候,也面再次load,这一次,我的页面在初次load的时候,前面传参数的页面传来的值不见了,所以我的 //取得上页面传来的参数
    string strId = Request.QueryString["id"];就无法取得值,错误的根源我想就是在这里了。
      

  18.   

    imports(小鸡快跑!) 
    如何解决呀,我又要死了,我除了这100分只有50分了,解决了这个问题,我再开贴给剩下的50分。
      

  19.   

    !IsPostBack——文件第一次载入时才运行的程序
      

  20.   

    !IsPostBack——文件第一次载入时才运行的程序
    IsPostBack——文件第2次以上载入时才运行的程序
      

  21.   

    你是说,本页获取不了上一页传递过来的参数吧?你在CODE页里的Page_Load中用Response.Write 写出一个传递过来的参数,你看看能不能在页面中把那个参数列出来
      

  22.   

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click        Response.Write("<script language='javascript'>alert('" & Request("id") & "');</script>")
        End Sub放一个button,点击,看看参数!
      

  23.   

    Wolfyee(肥牛火锅)
    你是说,本页获取不了上一页传递过来的参数吧?你在CODE页里的Page_Load中用Response.Write 写出一个传递过来的参数,你看看能不能在页面中把那个参数列出来我现在的页面是web2,前面传参数的页面是web1你说的我试过了,在提交页面以后,我的
    string strId = Request.QueryString["id"];
    无法取得第一次加载 web2 页面时前面 web1 传来的参数。
    这就是我错的地方,有什么方法可以使,我在页面提交完成后,不去执行
    string strId = Request.QueryString["id"];
    这样我的错误就解决了,浪费大家时间了。
      

  24.   

    我都说过了,在页面的多次postback中,变量都被多次初始化了!string strId = Request.QueryString["id"];
    strId 也被初始化了!你直接用Request.QueryString["id"]就行了!只要你不离开web2,web1的Request.QueryString["id"]是不变的!