小弟想做一个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方法中添加事件语句,请各位帮忙~~谢谢!
比如我下拉菜单中选“浙江省” 然后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方法中添加事件语句,请各位帮忙~~谢谢!
sql查询语句跟上dropdownlist 的值就好了。
然后dropdownlist在SelectedIndexChanged方法中
根据你dropdownlist选择的值,重新在数据库中检索相应的记录填充相关的DataSet
最后再用DataGrid重新绑定这个DataSet就OK了!
最后再用DataGrid重新绑定这个DataSet就OK了!”这个步骤如何用代码实现呢?我以前没有做过类似的检索,不好意思...
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。”的错误,我把自动分页取消后能正常运行。
那如何能在我应用自动分页的前提下实现检索呢?
然后再DataGrid1.DataSource=DataSet.Tables[0];
那如何把SQL语句取出的记录放到一个DataSet里面呢?小弟是新手,请指点...
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
{
....
}
}