asp:textbox和asp:dropdownlist,autopastback属性必须为true

解决方案 »

  1.   

    程序目的是根据条件查询数据中的记录
    具体情况是这样的:
    1.用户选择起始时间(asp:dropdownlist id="StartYear")、终止时间(asp:dropdownlist ID="EndYear")和输入地点(asp:textbox ID="txtAddress")
    2.用datagrid分页显示记录
    3.如果已查到46条条记录,分5页显示,现在我查看第3页的记录,符合条件,然后再次选择
    起始时间、终止时间和输入地点,然后再次选择datagrid中的第4页(此时datagrid不会消失),此时程序当然出错,解决方法是在起始时间等的OnSelectedChange的事件中使datagrid变为visible=false,单击查询按钮时datagrid的visible为true,但起始时间等autopastback=true此时间才有效。
    void searchCar_Click(...)
    {
        ...
    }    
    void SelectCodeChange(object sender,EventArgs e)//起始时间
    {   
          MyDataGrid.Visible=false;
          MyDataGrid.CurrentPageIndex=0;  
    }
    void GridPageChange(object source,DataGridPageChangedEventArgs e)
    {
    MyDataGrid.CurrentPageIndex=e.NewPageIndex;
    }
    //起始时间、终止时间、地点
    <td>起始时间
    <asp:dropdownlist ID="StartYear" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ChangeStartYear"> 
               <asp:listitem>00</asp:listitem>  
    </asp:dropdownlist></td>
    <td>终止时间
    <asp:dropdownlist ID="EndYear" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ChangeStartYear"> 
               <asp:listitem>00</asp:listitem>
    </asp:dropdownlist></td>
    <td><asp:textbox ID="txtAddress" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ChangeAddress"/></td>
    <asp:button ID="search"  value="查  询" OnClick="searchCar_Click" runat="server" text="查询"/>
      

  2.   

    是你分页后没有重新绑定DataGrid造成的!
    建议在分页事件中重新绑定DataGrid。
      

  3.   

    //查询代码如下
    void searchCar_Click(object sender,ImageClickEventArgs e)
    {
        string strStartYear = StartYear.SelectedItem.Text;//起始时间
        string strEndYear =EndYear.Text.ToString();//终止时间
        string strAddress = ddlAddress.SelectedItem.Text.ToString();//地点
        //取得DATAGRID的索引值 
        MyDataGrid.CurrentPageIndex=0;
        MyDataGrid.Visible=true;//再次点击按钮前应藏
       //连接数据库
       ...
    }     //DATAGRID控件绑定代码如下
    void GridPageChange(object source,DataGridPageChangedEventArgs e)
    {
        MyDataGrid.CurrentPageIndex=e.NewPageIndex;

        string strStartYear = StartYear.SelectedItem.Text;//起始时间
        string strEndYear =EndYear.Text.ToString();//终止时间
        string strAddress = ddlAddress.SelectedItem.Text.ToString();//地点
        //连接数据库
        string MyConnString = ConfigurationSettings.AppSettings["MYDATASOURCE"];
        OleDbConnection MyConnection = new OleDbConnection(MyConnString);
        if(MyConnection.State!=ConnectionState.Open)
        {
    MyConnection.Open();
        } 

        //按条件显示所输入的信息
        string searchSQL = "SELECT * FROM MYTABLE WHERE ...."
      
        DataSet MyDataSet = new DataSet();
        //打开 DataAdpater
        OleDbDataAdapter MyAdapter = new OleDbDataAdapter(searchSQL,MyConnection);

        //数据库填入DataSet
        MyAdapter.Fill(MyDataSet,"MYTABLE");

        //数据绑定到MyDataGrid控件并显示
        MyDataGrid.DataSource = MyDataSet.Tables["MYTABLE"].DefaultView;;
        MyDataGrid.DataBind();
        MyConnection.Close();
    }