2007.10.09错误记录

1)     Response.Write("<script language=javascript>alert("bbbbb")</script>");错误之处为:“alert("bbbbb")”,正确写为:“alert('bbbbb')”。

 

2)     数据源不支持服务器端的数据分页(GridView控件的使用)。

          可能原因:绑定数据源的时候用的是datareader,而datareader是只能向前的记录集,是不支持分布的
          解决方案:把datareader换成dataset 或 datatable,

          错误的代码为:

          inComm.CommandText = "select * from qx_StuInfo where uSchId =" + shindex;
            inComm.ExecuteNonQuery();
            SqlDataReader dr = inComm.ExecuteReader();
            GridView1.DataSource = dr;
            GridView1.DataBind();

          修改为:

            string sqltxt = "select * from qx_StuInfo where uSchId =" + shindex;
            SqlDataAdapter da = new SqlDataAdapter(sqltxt, inCon);
            DataSet ds = new DataSet();
            da.Fill(ds);
            GridView1.DataSource = ds.Tables[0].DefaultView;
            GridView1.DataBind();


3)    

           遇到下列相似问题,在网上查到下面分析不错,在此分享:

          GridView“GridView1”激发了未处理的事件“RowDeleting” 异常详细信息: System.Web.HttpException: GridView“GridView1”激发了未处理的事件“RowDeleting”。 原因分析: 在GridView1的事件中,即删除的确认对话框,因此,当你单击【删除】按钮时,已经执行了RowCommand事件,即执行了删除操作,然后再引发了RowDeleting了事件,但是代码中没有定义该事件,所以出错

<asp:TemplateField HeaderText="操作">        <ItemTemplate>                 <asp:LinkButton ID="lbtnDelete" runat="server" CommandName="Delete" CommandArgument='<%#Eval("F_ID") %>' OnClientClick="return confirm('您确定要删除吗?')">[删除]</asp:LinkButton></td>          </ItemTemplate> </asp:TemplateField>

解决方案:  1)你可以把【删除】按钮按钮的CommandName属性的值(原值为“delete”)修改为不是"delete"就可以了,譬如修改为“del”;   2)或者你主动添加一个RowDeleting事件,该事件中的代码为空。

 

GridView的PageIndexChanging事件代码:

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        showGridView();    

    }

 

4)     

          SqlException ,超时时间已到。在操作完成之前超时时间已过或服务器未响应。 异常信息:     异常类型: SqlException     异常消息: 超时时间已到。在操作完成之前超时时间已过或服务器未响应。获得数据连接超时。原因分析: <1>数据库正在进行备份操作。 <2>数据库设置的超时时间太短 <3>程序中获得的Connection没有及时释放 <4> 程序中的Transaction没有Commit或者RallBack

 

 

5)GridView的表头名称问题:

我想在cs里设置gridview的表头名称
我这样试了一下不对:
GridView1.Columns[1].HeaderText ="姓名";


行 32:        GridView1.DataSource = dt;
行 33:        GridView1.AutoGenerateColumns = false;
行 34:        GridView1.Columns[0].HeaderText ="ID";
行 35:        GridView1.Columns[1].HeaderText ="姓名";
行 36:        GridView1.DataBind();
错误提示是:System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。

 

分析:

这段代码有两个问题:

一、GridView1.AutoGenerateColumns = false;
这里由于是 false,所以没有自动创建列。

二、即使上面指定为 true,也会发生错误,为什么呢?因为动态创建的列是不会存储在公共可访问的字段集合中的,也就是说即使显示了 n 列,m 行,GridView1.Columns.Count 结果也是 0,也就不能对列进行索引。

你可以在数据源中改变列标题:
比如:
            ds.Tables[0].Columns[0].ColumnName = "学号";

posted @ 2008-10-09 13:50  笑一笑  阅读(498)  评论(0编辑  收藏  举报