首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

100分-改错,该如何解决

2012-02-09 
100分--改错细节上没任何问题的。运行一些正常。但是在分页的时候。因为Page_Load里面默认的搜索一次数据。当

100分--改错
细节上没任何问题的。
运行一些正常。
但是在分页的时候。
因为Page_Load里面默认的搜索一次数据。
当我使用条件搜索的时候。
触发了里面的分页事件。
于是搜索的数据点下一页的时候出现的确是没有搜索条件的默然数据。
问了以后才知道Page_Load里面应该写一个判断语句。但是我不知道怎么写。
100分求人指教一下。
<html>
<script   runat= "server "   language= "c# ">
protected   void   Page_Load(object   sender,   EventArgs   e)
{
string   strConnection= "Provider=Microsoft.Jet.OleDb.4.0;Data   Source= ";
strConnection+=Server.MapPath( "1.mdb ");

OleDbConnection   objConnection=new   OleDbConnection   (strConnection);

String   ee5= "update   jinhuo,DS_ClassInf   set   jinhuo.classname2=DS_ClassInf.classname   where   jinhuo.ClassID2=DS_ClassInf.ClassID ";
OleDbCommand   objCommand115   =   new   OleDbCommand(ee5,objConnection);
objCommand115.Connection.Open();
objCommand115.ExecuteNonQuery();
objCommand115.Connection.Close();

String   sql   =   "select   bianhao   as   教材编号,bookname   as   教材名称,shuliang   as   进货数量,booktime   as   进货时间,Classname   as   类别2,Classname2   as   类别1   from   jinhuo   ORDER   by   [booktime]   desc ";
DataSet   ds     =   new   DataSet();
OleDbDataAdapter   myada   =   new   OleDbDataAdapter(sql,strConnection);
myada.Fill(ds, "jinhuo ");
dgrdMain.DataSource   =   ds.Tables[ "jinhuo "].DefaultView;
dgrdMain.DataBind();  
  bianhao.Text= " ";
}

public   void   bind(object   sender,EventArgs   E)
{
string   strConnection= "Provider=Microsoft.Jet.OleDb.4.0;Data   Source= ";
strConnection+=Server.MapPath( "1.mdb ");

OleDbConnection   objConnection=new   OleDbConnection   (strConnection);

String   sql   =   "select   bianhao   as   教材编号,bookname   as   教材名称,shuliang   as   进货数量,booktime   as   进货时间,Classname   as   类别2,Classname2   as   类别1   from   jinhuo   where   bianhao= ' "   +   bianhao.Text   +   " '   and   format([booktime], 'yyyy-mm-dd   HH:mm:ss ')> = ' "+shijian1.Text+ " '   and   format([booktime], 'yyyy-mm-dd   HH:mm:ss ') <= ' "+shijian2.Text+ " '     ORDER   by   [booktime]   desc ";
DataSet   ds     =   new   DataSet();
OleDbDataAdapter   myada   =   new   OleDbDataAdapter(sql,strConnection);
myada.Fill(ds, "jinhuo ");
dgrdMain.DataSource   =   ds.Tables[ "jinhuo "].DefaultView;
dgrdMain.CurrentPageIndex=0;
dgrdMain.DataBind();
}
public   void   MyDataGrid_Page(object   sender,   System.Web.UI.WebControls.DataGridPageChangedEventArgs   e)
{
  dgrdMain.CurrentPageIndex   =   e.NewPageIndex;
  dgrdMain.DataBind();
}
</script>
<head>
<meta   http-equiv= "Content-Type "   content= "text/html;   charset=gb2312 "   />
<title> 无标题文档 </title>
<style   type= "text/css ">
<!--
.STYLE3   {font-size:   12px}
.STYLE5   {font-size:   9px}
-->
</style>
</head>
<body   bgcolor= "#F1F1F1 ">
<form   name= "form1 "   method= "post "   action= " "   runat= "server ">


    <table   width= "674 "   border= "0 "   align= "left "   cellpadding= "5 "   cellspacing= "1 "   bgcolor= "#cccccc ">
        <tr   bgcolor= "#ffffff ">
            <td   width= "662 "   class= "pad "> </FONT>
                <p> <span   class= "STYLE3 "> 从 </span>
                <asp:TextBox   ID= "shijian1 "   runat= "server "   Text= '2007-01-01   24:00:00 '   TextMode= "SingleLine "   Width= "150 "   CssClass= "STYLE3 "/>
                <span   class= "STYLE3 "> 至 </span>
            <asp:TextBox   ID= "shijian2 "   runat= "server "   Text= '2010-12-30   24:00:00 '   Width= "150 "   CssClass= "STYLE3 "/>                
                <p> <span   class= "STYLE3 "> 教材编号: </span>
                    <asp:TextBox   ID= "bianhao "   runat= "server "/>                    
                    <span   class= "STYLE3 ">
                    <asp:Button   ID= "Button1 "   Text= "开始查询 "   OnClick= "bind "   runat= "server "   />                    
                    <asp:RangeValidator   ID= "bianhao1 "   runat= "server "
  ControlToValidate= "bianhao "   ErrorMessage= "请输入正确的教材编号 "   Font-Bold= "true "   MaximumValue= "10000000000000000 "   MinimumValue= "1 "   Type= "Double "   Display= "Dynamic "> </asp:RangeValidator>
                            </span>
                        <td   width= "669 "   height= "155 "> <asp:DataGrid   AllowCustomPaging= "false "   AllowPaging= "true "   BorderColor= "#999999 "   BorderWidth= "1 "   CellPadding= "5 "   CellSpacing= "0 "   CssClass= "STYLE3 "   ID= "dgrdMain "   PageSize= "5 "   runat= "server "     OnPageIndexChanged= "MyDataGrid_Page ">
<PagerStyle       NextPageText= "下一页 "   PrevPageText= "上一页 "> </PagerStyle>
</asp:DataGrid>
</td>
                        <td   width= "97 "   colspan= "4 "   rowspan= "2 "> &nbsp; </td>
                    </tr>
                    <tr>


                            </tr>
                </table>
                <p> &nbsp; </p>
    </form>
</body>
</html>

[解决办法]
protected void Page_Load(object sender, EventArgs e)
{

if(!IsPostBack)
{
string strConnection= "Provider=Microsoft.Jet.OleDb.4.0;Data Source= ";
strConnection+=Server.MapPath( "1.mdb ");

}

[解决办法]
if(!IsPostBack)
[解决办法]
if(!IsPostBack)
{
string strConnection= "Provider=Microsoft.Jet.OleDb.4.0;Data Source= ";
strConnection+=Server.MapPath( "1.mdb ");
}这也是只是日常中很简单的操作方法啊。
[解决办法]
你的PageLoad里面的数据操作部分

放到这里面
if(!IsPostBack)
{
...
}
[解决办法]
if(!IsPostBack)
{
...
}
。。。。。

[解决办法]
来迟一步,常见问题。if(!IsPostBack)

[解决办法]
同上
if(!IsPostBack) 表示页面第一次加载时候运行的代码

你没有加这个 每回提交的时候都会运行 所以老显示的是初始数据
[解决办法]
if (!page.ispostback)
{
页面第一次加载时候运行
}

[解决办法]
protected void Page_Load(object sender, EventArgs e)
{

if(!IsPostBack)
{
string strConnection= "Provider=Microsoft.Jet.OleDb.4.0;Data Source= ";
strConnection+=Server.MapPath( "1.mdb ");

}
100分
[解决办法]
问题依然没有解决。
输入搜索教材编号6。
出现数据。
点击下一页。
又出现没有条件的数据。
搜索的条件失效。
-------------
见你的50分那贴,已解答
[解决办法]
给你篇文章,估计能够解决你的问题.


专栏作品
Henry手记—Web Form中的Datagrid的自定义分页
韩睿
________________________________________

图1 分页设置

"第一页 ":

DataGrid1.CurrentPageIndex = 0;

"上一页 ":

if (DataGrid1.CurrentPageIndex > 0)

DataGrid1.CurrentPageIndex -= 1;

"下一页 ":

if (DataGrid1.CurrentPageIndex < (DataGrid1.PageCount - 1))

DataGrid1.CurrentPageIndex += 1;

"最后一页 ":

DataGrid1.CurrentPageIndex = (DataGrid1.PageCount - 1);

private void SetGridSource()

{

SqlConnection MyConnection = new SqlConnection(YourOwnConnectionString);

string SelectCommand = "SELECT * FROM YOURTABLE ";

SqlDataAdapter MyCommand = new SqlDataAdapter(SelectCommand, MyConnection);

DataSet ds = new DataSet();

MyCommand.Fill(ds, " YOURTABLE ");

DataView dv = ds.Tables[ "YOURTABLE "].DefaultView;

DataGrid1.DataSource = dv;

DataGrid1.DataBind();


}

if (!IsPostBack)

{

StartIndex = 0;//StartIndex是int类型的公用变量

SqlConnection MyConnection = new SqlConnection(YourOwnConnectionString);

SqlCommand MyCommand = new SqlCommand( "SELECT mycount = COUNT(*) FROM Table ",MyConnection);

MyConnection.Open();

SqlDataReader dr = MyCommand.ExecuteReader(CommandBehavior.SingleRow);

if (dr.Read())

DataGrid1.VirtualItemCount = (int)dr[ "mycount "];

dr.Close();

MyConnection.Close();

SetGridSource(StartIndex, "上一页 ");//看看现在的形参有什么不同哦

}

private void SetGridSource (int StartPosition, string GoToPage)
{
SqlConnection MyConnection = new SqlConnection(YourOwnConnectionString);
SqlCommand MyCommand = null;
switch (GoToPage)
{
case "上一页 ":
MyCommand = new
SqlCommand( "SELECT TOP 5 * FROM Table WHERE column1 > = @ID ORDER BY column1 ",MyConnection);
if (StartPosition == 0)
MyCommand.Parameters.Add( "@ID ",SqlDbType.NVarChar, 10).Value = " ";//这里参数10是ID字段的长度
else
MyCommand.Parameters.Add( "@ID ",SqlDbType.NVarChar,10).Value =
ViewState[(DataGrid1.CurrentPageIndex + 1).ToString()];

break;
case "下一页 ":
MyCommand = new
SqlCommand( "SELECT TOP 5 * FROM Table WHERE column1 > @ID ORDER BY column1 ",MyConnection);
//注意:这里用的是> ,不是> =哟
MyCommand.Parameters.Add( "@ID ", SqlDbType.NVarChar,10).Value = DataGrid1.Items[4].Cells[0].Text;
//Items[4]表示第5行即每页显示的最后一行
break;
}
MyConnection.Open();
SqlDataReader dr = MyCommand.ExecuteReader();
DataGrid1.DataSource = dr;
DataGrid1.DataBind();
dr.Close();
MyConnection.Close();

//用ViewState来缓存刚才访问过的那一页的第一行中的主键值
ViewState[(DataGrid1.CurrentPageIndex + 1).ToString()]=DataGrid1.Items[0].Cells[0].Text;
}
注:如果是oracle数据库,可以在where条件中用rownum来控制上下页的条数与内容。

请在按扭的click事件里的最后调用SetGridSource方法,参数

StartPosition= DataGrid1.CurrentPageIndex *DataGrid1.PageSize;

[参考]关于Datagrid分页的更详细的内容,可以参看华中科技大学出版社出版的章立民先生所著之《用实例学ASP.NET--使用VB.NET与ADO.NET》一书


[解决办法]
问题应该出在绑定搜索之后没有绑定在分页里面!所以你按分页,他又默认绑定整个数据库了!

热点排行