【问题标题】:Getting a Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control error获取数据绑定方法如 Eval()、XPath() 和 Bind() 只能在数据绑定控件错误的上下文中使用
【发布时间】:2015-11-12 00:16:21
【问题描述】:

我收到“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>

【问题讨论】:

    标签: asp.net data-binding


    【解决方案1】:

    这个错误意味着你只能使用BindEvalXPath,如果你的对象是DataBound意味着它有DataSource

    根据您的DropDownList,您在其中嵌入了静态值,空白,1 - 5。

    从您的 DropDownList 删除此属性:SelectedValue='&lt;%# Bind("RatingID") %&gt;'

    然后做这个..

    在您的一个表单事件中,比如说Load

    Protected Sub Page_Load()
        Dim RatingID = (some select query here to get RatingID)
    
        ddlUserRating.ClearSelection()
        ddlUserRating.Items.FindByValue(RatingID).Selected = True
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2018-06-21
      • 2012-12-10
      • 2011-02-04
      • 2012-05-02
      • 2014-05-24
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 2012-08-11
      相关资源
      最近更新 更多