0

使用ObjectDataSource时,我有以下选择:

<asp:DropDownList runat="server" SelectedValue='<%# Bind("InceptionCycle.ID") %>' ID="InceptionCycle" 
     DataSourceID="odsAllCycles" DataTextField="CycleName" DataValueField="ID" AppendDataBoundItems="true">
     <asp:ListItem Text="Choose..." Value=""></asp:ListItem>
</asp:DropDownList>

ObjectDataSource配置了UpdateMethodInsertMethod。但是插入/更新方法的参数带有InceptionCycle名称(因为InceptionCycle.ID不是有效的标识符)。

有没有办法指示 ObjectDataSource 采用InceptionCycle.ID形式参数并作为InceptionCycle方法参数放置?

这是完整的 ObjectDataSource 代码:

<asp:ObjectDataSource ID="ods" runat="server" TypeName="Sources.DomainSource"
    SelectMethod="FindById" InsertMethod="Add" UpdateMethod="Update"
    OnInserted="ods_Inserted" OnUpdated="ods_Updated">
    <SelectParameters>
        <asp:QueryStringParameter Name="id" QueryStringField="id" />
    </SelectParameters>
    <InsertParameters>
        <asp:Parameter ConvertEmptyStringToNull="true" Name="ShortTitle" />
        <asp:Parameter ConvertEmptyStringToNull="true" Name="WMRId" />
        <asp:Parameter ConvertEmptyStringToNull="true" Name="MDSId" />
        <asp:Parameter ConvertEmptyStringToNull="true" Name="Status" />
    </InsertParameters>
    <UpdateParameters>
        <asp:QueryStringParameter Name="id" QueryStringField="id" />
        <asp:Parameter ConvertEmptyStringToNull="true" Name="ShortTitle" />
        <asp:Parameter ConvertEmptyStringToNull="true" Name="WMRId" />
        <asp:Parameter ConvertEmptyStringToNull="true" Name="MDSId" />
        <asp:Parameter ConvertEmptyStringToNull="true" Name="Status" />
    </UpdateParameters>
</asp:ObjectDataSource>
4

1 回答 1

0

您只能将 Bind 语法与顶级属性一起使用 - 它不支持嵌套属性(不过 VS 2012 会支持)。

因此,您应该在数据源上创建一个新属性,如下所示,并将 SelectedValue 绑定到这个新属性

 public string InceptionCycleID
 {
      get
      {
           return InceptionCycle.ID;
      }
      set
      {
           InceptionCycle.ID = value;
      }
 }
于 2012-06-19T12:47:06.113 回答