100分急紧求助,数据绑定问题

taomaintao 2006-10-31 06:09:05
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
GridView1.EditIndex = -1;
if (ViewState["sortColumn"].ToString() == e.SortExpression.ToString())
{
if ("ASC" == ViewState["sortDirection"].ToString())
{
ViewState["sortDirection"] = "DESC";
}
else
{
ViewState["sortDirection"] = "ASC";
}
}
else
{
ViewState["sortColumn"] = e.SortExpression.ToString();
ViewState["sortDirection"] = "ASC";
}
orderbind(ViewState["sortColumn"].ToString(), ViewState["sortDirection"].ToString());
}
//===========================================================

void orderbind(string SortPression,string SortDirction)//绑定datagrid
{
string sql = "select * from nclass where class_mark=0 order by " + SortPression + " " + SortDirction;
obj.New();
obj.binddatagrid(sql, GridView1);
obj.Close();

}

//===========================================================
public void binddatagrid(string sql, GridView dg)
{
if(con.State==ConnectionState.Closed)
{
Open();
}
ds=getdataset(sql);
dg.DataSource=ds.Tables[0].DefaultView;
//dg.DataBinding();
dg.DataBind();

}

//===========================================================
public DataSet getdataset(string sql)
{
if(con.State==ConnectionState.Closed)
{
Open();
}
adp=new OleDbDataAdapter(sql,con);
ds=new DataSet();
adp.Fill(ds,"ds");
return ds;
}



现在的问题是:当string sql = "select * from nclass where class_mark=0 order by " + SortPression + " " + SortDirction;时getdataset()中的adp.Fill(ds,"ds");这句出错,当string sql = "select * from nclass where class_mark=0 "时是正确的,说明数据绑定函数没有问题,但遇到排序时就出错了,有可能是GridView1_Sorting()或orderbind出问题了,请高手帮忙指点一下,小弟忙火了半天了,费解呀。55555555555。其实我就是要实现一个gridview的多列排序问题。

...全文
205 12 打赏 收藏 举报
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
taomaintao 2006-11-01
  • 打赏
  • 举报
回复
问题终于解决了,哈哈,送分了
taomaintao 2006-11-01
  • 打赏
  • 举报
回复
今天早上来看了一下详细错误信息,adp.Fill(ds,"ds");
在执行这句时出现:{由于以前的函数求值超时,函数求值被禁用。必须继续执行才能重新启用函数求值。}
为何出现这种情况
daishengs 2006-10-31
  • 打赏
  • 举报
回复
if (ViewState["sortColumn"] == null) ViewState["sortColumn"] = e.SortExpression;
if (ViewState["sortDirection"] == null) ViewState["sortDirection"] = "ASC";

看005的代码就是给你加了这两名。它应该是用来判断如果值为空,就给它设置默认值,不然就会出错。
avisnet 2006-10-31
  • 打赏
  • 举报
回复
ds这个表名存在吗?
taomaintao 2006-10-31
  • 打赏
  • 举报
回复
上面这段是调试通过了,但adp.Fill(ds,"ds");
这句话为什么出错了
taomaintao 2006-10-31
  • 打赏
  • 举报
回复
没关系,谢谢你了。
SortPression和SortDirction的值是什么?
这两个变量的值是正确的,我调试看了的,SQL语句完全正常
Eddie005 2006-10-31
  • 打赏
  • 举报
回复
很抱歉刚才没有给楼主解决彻底~
Eddie005 2006-10-31
  • 打赏
  • 举报
回复
下面的代码已经过测试通过~

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="webform1.aspx.cs" Inherits="CSDN_webform1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
 

<asp:GridView ID="GridView1" runat="server" AllowSorting="True" OnSorting="GridView1_Sorting">
</asp:GridView>

</form>
</body>
</html>
===========================
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class CSDN_webform1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
orderbind(null,null);
}
protected void orderbind(string SortPression, string SortDirction)//绑定datagrid
{
string sql = "select * from nclass where class_mark=0 order by ";

if (SortPression != null && SortDirction != null)sql += SortPression + " " + SortDirction;

obj.New();
obj.binddatagrid(sql, GridView1);
obj.Close();

}

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
GridView1.EditIndex = -1;
if (ViewState["sortColumn"] == null) ViewState["sortColumn"] = e.SortExpression;
if (ViewState["sortDirection"] == null) ViewState["sortDirection"] = "ASC";

if (ViewState["sortColumn"].ToString() == e.SortExpression.ToString())
{
if ("ASC" == ViewState["sortDirection"].ToString())
{
ViewState["sortDirection"] = "DESC";
}
else
{
ViewState["sortDirection"] = "ASC";
}
}
else
{
ViewState["sortColumn"] = e.SortExpression.ToString();
ViewState["sortDirection"] = "ASC";
}
orderbind(ViewState["sortColumn"].ToString(), ViewState["sortDirection"].ToString());

}
}
股神 2006-10-31
  • 打赏
  • 举报
回复
up
shalen520 2006-10-31
  • 打赏
  • 举报
回复
string sql = "select * from nclass where class_mark=0 order by " + SortPression + " " + SortDirction;

调试看看sql的值是多少,最好复制出来执行下这条语句
xingyaohua 2006-10-31
  • 打赏
  • 举报
回复
调试一下看看传进来的两个值SortPression,SortDirction是什么
avisnet 2006-10-31
  • 打赏
  • 举报
回复
SortPression和SortDirction的值是什么?
发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2006-10-31 06:09
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。