如何指示ObjectDataSource将表单参数与方法参数匹配

时间:2012-06-19 12:40:56

标签: asp.net .net objectdatasource

使用 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 使用 UpdateMethod InsertMethod 进行配置。但是,插入/更新方法具有 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>

1 个答案:

答案 0 :(得分:0)

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

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

 public string InceptionCycleID
 {
      get
      {
           return InceptionCycle.ID;
      }
      set
      {
           InceptionCycle.ID = value;
      }
 }