2

.NET 2.0 を使用して、フィールドが ObjectDataSource (ODS) にバインドされた FormView を使用しています。これらのフィールドは、最初は正しい値 (つまり、ODS の SelectMethod が呼び出されたときに Person オブジェクトから取得されます) で開始されますが、変更を加えて ODS の UpdateMethod を呼び出した後、フィールドからこれらの新しい値または値を取得できません。更新のコール スタックのどこからでも。私のコードは次のようになります。

    <div id="personInfo"><asp:FormView ID="fvwPerson" runat="server" DataSourceID="srcPerson" DefaultMode="Edit">

    <EditItemTemplate>

          <table border="0" width="100%" style="font-weight:bold">

…<br>

        <td align="right">

          First Name:

        </td>

        <td>

          <asp:TextBox ID="txtFirstName" runat="server" Text='<%# Bind("FirstName")%>' />

          &nbsp;&nbsp;&nbsp;&nbsp;Middle Name: &nbsp;<asp:TextBox ID="txtMiddleName" runat="server"

            Text='<%# Bind("MiddleName")%>' />

          &nbsp;&nbsp;&nbsp;&nbsp;Last Name: &nbsp;

          <asp:TextBox ID="TextBox5" runat="server"

            Text='<%# Bind("LastName")%>' />

…</p>

        </EditItemTemplate>

    </asp:FormView>

  </div>

…</p>

      <asp:ObjectDataSource ID="srcPerson" runat="server" SelectMethod="GetPersonInfo" UpdateMethod="SavePersonInfo"

        TypeName="BLL.Person">

        <SelectParameters>

          <asp:SessionParameter Name="personID" SessionField="personid" DefaultValue="0" />

        </SelectParameters>

        <UpdateParameters>

          <asp:Parameter Name="firstName" Type="String" Direction="Input" DefaultValue="Fail 1!" />

          <asp:Parameter Name="middleName" Type="String" Direction="Input" DefaultValue="Fail 2!" />

          <asp:Parameter Name="lastName" Type="String" Direction="Input" DefaultValue="Fail 3!" />

        </UpdateParameters>

      </asp:ObjectDataSource>

SavePerson では、パラメータ値はそれぞれ「Fail 1!」、「Fail 2!」、「Fail 3!」です。FormParameters も使用してみましたが、同じ結果が得られました。

          <asp:FormParameter Name="firstName" FormField="txtFirstName" Type="String" Direction="Input" DefaultValue="Fail 1!" />

          <asp:FormParameter Name="middleName" FormField="txtMiddleName" Type="String" Direction="Input" DefaultValue="Fail 2!" />

          <asp:FormParameter Name="lastName" FormField="txtLastName" Type="String" Direction="Input" DefaultValue="Fail 3!" />

また、フィールド名の前に「fvwPerson.」を付けてみました。ODS の Updating イベントも処理しようとしましたが、e.InputParameters はすべて "Fail" で始まりました。私は本当にすべての正しい例に従っていると思っていましたが、何が間違っているのでしょうか? DirectCast(fvwPerson.FindControl("fieldName"), TextBox).Text を 38 回呼び出す必要がないようにしてください。ありがとう…</p>

2010 年 7 月 6 日編集: 表示用ではなく、編集用のアイテム テンプレートしかないことを言及する必要がありました (これらのコントロールをすべて複製する必要はないと思いました)。FormView タグが示すように、編集します。デフォルトモードです。それは私の問題の潜在的な原因ですか?

4

0 に答える 0