我有一个dropdownlist控件,里面存放一些部门信息。当选择一个部门,点击查询按钮的时候能够搜索出符合这个部门的信息,并且点击DataGrid的头部的时候能够对查询出的这个部门的信息做正反向排序。部门信息里自动加载数据库表的时候自动添加一个请选择(默认是全选),当我点击请选择的时候查询出全部信息,这时候在点击DataGrid的头部排序就会没有数据(这个我知道,因为数据库里面没有信息)。我想做成在查询全部信息的时候点击DataGrid头部排序的时候也能够对查出的全部信息进行正反排序。怎么做啊。以下是我的代码。
我在bind()方法里做了个判断.if(str==sqlstr)这么写应该不对。
//排序类
public void bind()
{
string str="";
string sqlstr = "select * from SoftwareInfo where department='"+this.ddldepartment.SelectedValue+"'";
string sql = "select * from SoftwareInfo";
if(sqlstr==str)
{
SqlConnection conn = new SqlConnection("server=.;database=softwaremanage;uid=sa;pwd=sa");
SqlDataAdapter da = new SqlDataAdapter(sqlstr, conn);
DataSet ds = new DataSet();
conn.Open();
da.Fill(ds,"SoftwareInfo");
DataView view = ds.Tables["SoftwareInfo"].DefaultView;
string sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];
view.Sort = sort;
DataGrid.DataSource = view;
DataGrid.DataBind();
conn.Close();
}
if(str==sql)
{
SqlConnection conn1 = new SqlConnection("server=.;database=softwaremanage;uid=sa;pwd=sa");
SqlDataAdapter da1 = new SqlDataAdapter(sql, conn1);
DataSet ds1 = new DataSet();
conn1.Open();
da1.Fill(ds1, pager.PageSize*(pager.CurrentPageIndex-1),pager.PageSize,"SoftwareInfo");
DataView view1 = ds1.Tables["SoftwareInfo"].DefaultView;
string sort1 = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];
view1.Sort = sort1;
DataGrid.DataSource = view1;
DataGrid.DataBind();
conn1.Close();
} }private void DataGrid_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
string sPage = e.SortExpression;
if (ViewState["SortOrder"].ToString() == sPage)
{
if (ViewState["OrderDire"].ToString() == "Desc")
ViewState["OrderDire"] = "ASC";
else
ViewState["OrderDire"] = "Desc";
}
else
{
ViewState["SortOrder"] = e.SortExpression;
}
bind();
}if(!Page.IsPostBack)
{
string strdep = "select department from DepartmentInfo";
dep.Listdep(ddldepartment,strdep); ViewState["SortOrder"] = "sid";
ViewState["OrderDire"] = "ASC"; BindData();
}
public void Listdep(DropDownList userList,string sqlStr)
{
SqlConnection conn = new SqlConnection("server=.;database=softwaremanage;uid=sa;pwd=sa");
conn.Open();
SqlCommand cmd = new SqlCommand(sqlStr, conn);
SqlDataReader dr = cmd.ExecuteReader();
userList.DataSource = dr;
userList.DataTextField = "department";
userList.DataValueField = "department";
userList.DataBind();
userList.Items.Insert(0, "--请选择--");
userList.SelectedIndex = 0;
dr.Close();
conn.Close();
}
我在bind()方法里做了个判断.if(str==sqlstr)这么写应该不对。
//排序类
public void bind()
{
string str="";
string sqlstr = "select * from SoftwareInfo where department='"+this.ddldepartment.SelectedValue+"'";
string sql = "select * from SoftwareInfo";
if(sqlstr==str)
{
SqlConnection conn = new SqlConnection("server=.;database=softwaremanage;uid=sa;pwd=sa");
SqlDataAdapter da = new SqlDataAdapter(sqlstr, conn);
DataSet ds = new DataSet();
conn.Open();
da.Fill(ds,"SoftwareInfo");
DataView view = ds.Tables["SoftwareInfo"].DefaultView;
string sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];
view.Sort = sort;
DataGrid.DataSource = view;
DataGrid.DataBind();
conn.Close();
}
if(str==sql)
{
SqlConnection conn1 = new SqlConnection("server=.;database=softwaremanage;uid=sa;pwd=sa");
SqlDataAdapter da1 = new SqlDataAdapter(sql, conn1);
DataSet ds1 = new DataSet();
conn1.Open();
da1.Fill(ds1, pager.PageSize*(pager.CurrentPageIndex-1),pager.PageSize,"SoftwareInfo");
DataView view1 = ds1.Tables["SoftwareInfo"].DefaultView;
string sort1 = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];
view1.Sort = sort1;
DataGrid.DataSource = view1;
DataGrid.DataBind();
conn1.Close();
} }private void DataGrid_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
string sPage = e.SortExpression;
if (ViewState["SortOrder"].ToString() == sPage)
{
if (ViewState["OrderDire"].ToString() == "Desc")
ViewState["OrderDire"] = "ASC";
else
ViewState["OrderDire"] = "Desc";
}
else
{
ViewState["SortOrder"] = e.SortExpression;
}
bind();
}if(!Page.IsPostBack)
{
string strdep = "select department from DepartmentInfo";
dep.Listdep(ddldepartment,strdep); ViewState["SortOrder"] = "sid";
ViewState["OrderDire"] = "ASC"; BindData();
}
public void Listdep(DropDownList userList,string sqlStr)
{
SqlConnection conn = new SqlConnection("server=.;database=softwaremanage;uid=sa;pwd=sa");
conn.Open();
SqlCommand cmd = new SqlCommand(sqlStr, conn);
SqlDataReader dr = cmd.ExecuteReader();
userList.DataSource = dr;
userList.DataTextField = "department";
userList.DataValueField = "department";
userList.DataBind();
userList.Items.Insert(0, "--请选择--");
userList.SelectedIndex = 0;
dr.Close();
conn.Close();
}
解决方案 »
- 为什么VS2008中Ajax 扩展控件无法使用啊?
- aspx 下调用脚本函数
- 求一个table的翻页效果
- 高手进,关于登录页面 看看为什么在vs中调试正常 但在发布后执行错误
- 在不能控制IIS的情况下能否将aspx页面重写成html页面?
- 为什么百度要用这个主机地址呢?/
- 如何在点浏览器后退按钮的时候,与服务器进行交互.
- 再次请教图片连续滚动的问题,谢谢!
- 如何用AspNet实现从网址获得网站的Title?
- RowSelectorColumn怎么才能在一个datagrid中同时放2个或者2个以上的RowSelectorColumn?
- 我得到一个微软讲师邵志东写的一个数据库访问类,谁能帮我理解和运用一下
- 多線程
http://www.cnblogs.com/z26483770/archive/2007/02/06/642568.aspx
鏈接--Gridview72般絕技
string sqlstr = "select * from SoftwareInfo where department='"+this.ddldepartment.SelectedValue+"'";
string sql = "select * from SoftwareInfo";
if(sqlstr==str){ }
if(str==sql){ }
两个if都不成立
bind()根本没有效果