Asp.net 获取数据绑定方法,如Eval()、XPath()和Bind()只能在数据绑定控件错误的上下文中使用

Asp.net 获取数据绑定方法,如Eval()、XPath()和Bind()只能在数据绑定控件错误的上下文中使用,asp.net,data-binding,Asp.net,Data Binding,我得到一个数据绑定方法,如Eval、XPath和Bind,只能在数据绑定控件的上下文中使用。错误消息。我在这里查看了其他人对该错误的看法。在我看来,似乎有些人把绑定语法弄错了。我相信我使用的是正确的数据绑定,但我可能错了。错误发生在DropDownList的第一行。我用的是VS 2015 <asp:DropDownList runat="server" ID="ddlUsersRating" AutoPostBack="True" DataSourceID="sdsUserRati

我得到一个数据绑定方法,如Eval、XPath和Bind,只能在数据绑定控件的上下文中使用。错误消息。我在这里查看了其他人对该错误的看法。在我看来,似乎有些人把绑定语法弄错了。我相信我使用的是正确的数据绑定,但我可能错了。错误发生在DropDownList的第一行。我用的是VS 2015

<asp:DropDownList runat="server" ID="ddlUsersRating" AutoPostBack="True"
    DataSourceID="sdsUserRatings" DataTextField="RatingID"
    DataValueField="RatingID" Height="16px"
    SelectedValue='<%# Bind("RatingID") %>'
    AppendDataBoundItems="False"
    OnSelectedIndexChanged="ddlUsersRating_SelectedIndexChanged">
    <asp:ListItem Value="">(Select a Rating)</asp:ListItem>
    <asp:ListItem Value="1">1</asp:ListItem>
    <asp:ListItem Value="2">2</asp:ListItem>
    <asp:ListItem Value="3">3</asp:ListItem>
    <asp:ListItem Value="4">4</asp:ListItem>
    <asp:ListItem Value="5">5</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource runat="server" ID="sdsUserRatings" 
    ConnectionString="<%$ ConnectionStrings:VideoLibraryConnectionString %>"
    InsertCommand="INSERT INTO UserRatings(UserID, ShowID, RatingID) VALUES (@UserID, @ShowID, @RatingID)"
    SelectCommand="SELECT UserRatings.RatingID FROM UserRatings INNER JOIN Users ON UserRatings.UserID = Users.UserID WHERE (UserRatings.ShowID = @ShowID) AND (Users.UserID = @UserID)"
    UpdateCommand="UPDATE UserRatings SET RatingID = @RatingID WHERE (UserID = @UserID) AND (ShowID = @ShowID)" OnInserted="sdsUserRatings_Inserted">
    <InsertParameters>
        <asp:ControlParameter ControlID="ddlUsers" Name="UserID"
            PropertyName="SelectedValue" />
        <asp:RouteParameter Name="ShowID" RouteKey="ShowID" />
        <asp:ControlParameter ControlID="ddlUsersRating" Name="RatingID"
            PropertyName="SelectedValue" />
    </InsertParameters>
    <SelectParameters>
        <asp:RouteParameter Name="ShowID" RouteKey="ShowID" />
        <asp:ControlParameter ControlID="ddlUsers" Name="UserID"
            PropertyName="SelectedValue" />
    </SelectParameters>
    <UpdateParameters>
        <asp:ControlParameter ControlID="ddlUsersRating" Name="RatingID"
            PropertyName="SelectedValue" />
        <asp:ControlParameter ControlID="ddlUsers" Name="UserID"
            PropertyName="SelectedValue" />
        <asp:RouteParameter Name="ShowID" RouteKey="ShowID" />
    </UpdateParameters>
</asp:SqlDataSource>

此错误意味着您只能使用Bind、Eval、XPath,前提是您的对象是数据绑定的,这意味着它有数据源

根据你看到的DropDownList,你在其中嵌入了静态值,为空,1-5

从下拉列表中删除此属性:SelectedValue=

那就这么做吧

在一个表单事件中,让我们说加载

Protected Sub Page_Load()
    Dim RatingID = (some select query here to get RatingID)

    ddlUserRating.ClearSelection()
    ddlUserRating.Items.FindByValue(RatingID).Selected = True
End Sub