小弟想做一个Dropdownlist的功能,当选中下拉菜单中的某项时,对应页面中的DataGrid也重新加载,并且要符合Dropdownlist中所选项目的要求。
比如我下拉菜单中选“浙江省” 然后DataGrid中的数据就把所有“浙江省”的资料显示出来,其他的就不要显示了。
请各位大哥大姐提供思路。因为小弟是新手,所以最好请附上源代码!谢谢~~
小弟已经建好了Dropdownlist如下:
<asp:dropdownlist id="selectsubject" runat="server" Width="100px" Height="18px">
    <asp:ListItem Value="all">所有城市</asp:ListItem>
    <asp:ListItem Value="zhejiang">浙江</asp:ListItem>
    <asp:ListItem Value="jiangshu">江苏</asp:ListItem>
    <asp:ListItem Value="guangzhou">广州</asp:ListItem>
    <asp:ListItem Value="shanghai">上海</asp:ListItem>
    <asp:ListItem Value="fujian">福建</asp:ListItem>
</asp:dropdownlist>
现在就是要在SelectedIndexChanged方法中添加事件语句,请各位帮忙~~谢谢!

解决方案 »

  1.   

    设置dropdownlist 的 autopostback=true
    sql查询语句跟上dropdownlist 的值就好了。
      

  2.   

    先设置dropdownlist 的 autopostback=true
    然后dropdownlist在SelectedIndexChanged方法中
    根据你dropdownlist选择的值,重新在数据库中检索相应的记录填充相关的DataSet
    最后再用DataGrid重新绑定这个DataSet就OK了!
      

  3.   

    楼上大哥“根据你dropdownlist选择的值,重新在数据库中检索相应的记录填充相关的DataSet
    最后再用DataGrid重新绑定这个DataSet就OK了!”这个步骤如何用代码实现呢?我以前没有做过类似的检索,不好意思...
      

  4.   

    http://blog.csdn.net/lovecherry/archive/2005/03/24/328455.aspx
      

  5.   

    小弟目前编写了如下代码:
    private void selectsubject_SelectedIndexChanged(object sender, System.EventArgs e)
    {
        string i=selectsubject.SelectedItem.Text;
        string strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;";
        string DataBase  = Server.MapPath("db/db.mdb");
        strConnection += "Data Source=" + DataBase;    OleDbConnection myConnection = new OleDbConnection(strConnection);    switch(i)
        {
            case"所有科目":
                 string SQL1="SELECT * FROM countsubject";
        OleDbCommand myCommand1 = new OleDbCommand (SQL1,myConnection);
        myConnection.Open();
        DataGrid1.DataSource=myCommand1.ExecuteReader(CommandBehavior.CloseConnection);
        DataGrid1.DataBind();
        break;
    case"资产类":
        string SQL2="SELECT * FROM countsubject WHERE class='"+i+"'";
        OleDbCommand myCommand2 = new OleDbCommand (SQL2,myConnection);
        myConnection.Open();
                 DataGrid1.DataSource=myCommand2.ExecuteReader(CommandBehavior.CloseConnection);
        DataGrid1.DataBind();
        break;
               .......................................//重复代码省略;
         }
    }
    我调试后出现“当 AllowPaging 设置为真并且选定的数据源不实现 ICollection 时,AllowCustomPaging 必须为真,并且 ID 为 DataGrid1 的 DataGrid 必须设置 VirtualItemCount。”的错误,我把自动分页取消后能正常运行。
    那如何能在我应用自动分页的前提下实现检索呢?
      

  6.   

    把SQL语句取出的记录放到一个DataSet里面
    然后再DataGrid1.DataSource=DataSet.Tables[0];
      

  7.   

    TO:goldentimecym(振荡波)  这位大哥
    那如何把SQL语句取出的记录放到一个DataSet里面呢?小弟是新手,请指点...
      

  8.   

    简化SelectedIndexChanged的方法:
    private void selectsubject_SelectedIndexChanged(object sender, System.EventArgs e)
    {
        string i=selectsubject.SelectedItem.Text;
        string strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;";
        string DataBase  = Server.MapPath("db/db.mdb");
        strConnection += "Data Source=" + DataBase;
        
        if(i!="所有城市")
        {
            string SQL="SELECT * FROM countsubject WHERE class='"+i+"'";
            OleDbConnection myConnection = new OleDbConnection(strConnection);
            OleDbCommand myCommand = new OleDbCommand (SQL,myConnection);
            myConnection.Open();
            DataGrid1.DataSource=myCommand.ExecuteReader(CommandBehavior.CloseConnection);
            DataGrid1.DataBind();
        }
        else
        {
        ....
        }
    }