<asp:DropDownList ID="DropDownList1"
    runat="server" DataTextField="Title"
    DataValueField="Id" DataSourceID="SqlDataSource1" />    <asp:Button ID="btnSelect" Text="Select" runat="server" />    <asp:SqlDataSource ID="SqlDataSource1" runat="server"
    SelectCommand="select title,Id from Movies"
    ConnectionString="<%$ConnectionStrings:movies %>"/>    <asp:DetailsView ID="DetailsView1" runat="server"
    DataSourceID="SqlDataSource2" />    <asp:SqlDataSource ID="SqlDataSource2" runat="server"
    SelectCommand="select * from Movies where Id=@Id"
    ConnectionString="<%$ConnectionStrings:movies%>">
            <SelectParameters>
              <asp:ControlParameter ControlID="DropDownList1" PropertyName="SelectedValue" Name="Id" />
            </SelectParameters>
    </asp:SqlDataSource>DataValueField、PropertyName、Name的作用
那个地方把数据传递给@Id
说下原理和数据绑定的过程

解决方案 »

  1.   

    第一个DataValueField="Id",就是下拉列表框内每个列表项的Value属性的值,来源于SqlDatgaSource1获取的数据记录中的Id字段。第二个SqlDataSource2中的where Id=@Id,是一条参数化SQL语句,@Id是个参数,下面的
    <SelectParameters>
                  <asp:ControlParameter ControlID="DropDownList1" PropertyName="SelectedValue" Name="Id" />
    </SelectParameters>
    给出了SQL语句中各个参数的情况:只有一个参数,名字叫Id(Name="Id"),参数值来自DropDownList1的SelectedValue属性。
      

  2.   

    谢谢了,但是还有一点不懂DataValueField="Id"的作用是什么,为什么不能要?
    DataTextField="Title"的作用据是在DropDownList控件中显示数据库中的Title项吧
      

  3.   

    DataValueField DropDownList 绑定字段
    DataTextField DropDownList 显示字段为什么不能要?
    因为下面的SQL参数来源就是SelectedValue(对应DataValueField)
    如果SQL参数绑定SelectedText(对应的就是DataTextField)