今天做一个选择省份自动选出城市的功能, 所选的省份Value值是他的ID(int类型)
  我在另一个DropDownList设的查询条件是所选省份的ID,代码是这样的:                <li>
        <asp:DropDownList ID="shen" runat="server" AppendDataBoundItems="True" 
                        DataSourceID="provincedate" DataTextField="province" DataValueField="id">
            <asp:ListItem Value="*">所有省份</asp:ListItem>
        </asp:DropDownList>
                    <asp:SqlDataSource ID="provincedate" runat="server" 
                        ConnectionString="<%$ ConnectionStrings:qluludataConnectionString %>" 
                        SelectCommand="SELECT [id], [province] FROM [Q_province]">
                    </asp:SqlDataSource>
    </li>
    <li>
        <asp:DropDownList ID="shi" runat="server" AppendDataBoundItems="True" 
            DataSourceID="citydate" DataTextField="cityname" DataValueField="cityname">
            <asp:ListItem Value="*">所有城市</asp:ListItem>
        </asp:DropDownList>
        <asp:SqlDataSource ID="citydate" runat="server" 
            ConnectionString="<%$ ConnectionStrings:qluludataConnectionString %>" 
            SelectCommand="SELECT [cityname] FROM [Q_city] WHERE ([provinceid] = @provinceid)">
            <SelectParameters>
                <asp:ControlParameter ControlID="shen" Name="provinceid" 
                    PropertyName="SelectedValue" Type="Int32" />
            </SelectParameters>
        </asp:SqlDataSource>
    </li>
 <SelectParameters>已经声明了数据类型是Int32了,怎么还会出错

解决方案 »

  1.   

    你的第一个<asp:DropDownList 省区下拉里面要设置 AutoPostBack="true",要不然联动不了你绑定price的时候要指定一个默认值,要不然默认值是null,所以你转换成int32的出错了
      

  2.   

    <SelectParameters>
                    <asp:ControlParameter ControlID="shen" Name="provinceid" 
                        PropertyName="SelectedValue"/>
                </SelectParameters>
      

  3.   

    在设置省份的下拉框的时候value类型并不是int类型,而你在设置SelectParameters的时候指定了类型为int32
    <SelectParameters> 
                    <asp:ControlParameter ControlID="shen" Name="provinceid" 
                        PropertyName="SelectedValue"/> 
                </SelectParameters>
      

  4.   

    据我研究,发现以下问题:
    1.你的第一个 <asp:DropDownList 省区下拉里面要设置 AutoPostBack="true",要不然联动不了 2.没有设置默认值,示例:DefaultValue="guangdong" 3.DropDwonList默认类型是String,所以你可以不指定类型,
    解决方法:
    1.<asp:DropDownList AutoPostBack="true"...2.<SelectParameters> 
                    <asp:ControlParameter ControlID="shen" Name="provinceid" 
                        PropertyName="SelectedValue" DefaultValue="guangdong" /> 
                </SelectParameters>
      

  5.   

    在设置省份的下拉框的时候value类型并不是int类型,而你在设置SelectParameters的时候指定了类型为int32 
    <SelectParameters> 
                    <asp:ControlParameter ControlID="shen" Name="provinceid" 
                        PropertyName="SelectedValue"/> 
                </SelectParameters>
    字段类型在两处不一致。
      

  6.   

    1、楼主的所有省份和所有城市都去掉吧
    2、然后在省份下拉里加AutoPostBack="true"
    3、两个下拉的AppendDataBoundItems="True"都去掉,特别是城市,一定要去掉,不然选项越来越多