4

フォーム ビューがあり、編集テンプレートには 2 つのドロップダウンがあります。ドロップダウン 1 は、許可された値のリストで明示的に設定されています。自動ポストバックにも設定されています。ドロップダウン 2 は objectdatasource にデータバインドされています。この objectdatasource は最初のドロップダウンをパラメーターの 1 つとして使用します。(アイデアは、ドロップダウン 1 がドロップダウン 2 に表示されるものを制限するということです)

アイテムの編集テンプレートの最初のビューでは、正常に機能します。ただし、ドロップダウン 1 で別のアイテムが選択されている場合、ポストバックしてエラーが発生します

Eval()、XPath()、および Bind() などのデータバインディング メソッドは、データバインドされたコントロールのコンテキストでのみ使用できます。

ドロップダウン リスト #2 は次のとおりです。

<asp:DropDownList ID="ProjectList" runat="server" SelectedValue='<%# Bind("ConnectToProject_ID","{0:D}") %>' DataSourceID="MasterProjectsDataSource2" DataTextField="Name" DataValueField="ID" AppendDataBoundItems="true">
      <asp:ListItem Value="0" Text="{No Master Project}" Selected="True" />
</asp:DropDownList>

MasterProjectDataSource2 は次のとおりです。

<asp:ObjectDataSource ID="MasterProjectsDataSource2" runat="server" 
            SelectMethod="GetMasterProjectList" TypeName="WebWorxData.Project" >
            <SelectParameters>
                <asp:ControlParameter ControlID="RPMTypeList" Name="RPMType_ID" 
                    PropertyName="SelectedValue" Type="Int32" />
            </SelectParameters>
        </asp:ObjectDataSource>

これを機能させる方法に関するヘルプは、非常に高く評価されます。

4

3 に答える 3

3

FormView のバインドされたドロップダウンリストで同様の問題がありました。フォームビューの「OnDataBound」で選択した値を手動で設定することで回避しました。

(どこから ConnectToProject_ID を取得したのかわかりません)

FormView fv = (FormView)sender;
DropDownList ddl = (DropDownList)fv.FindControl("ProjectList");
ddl.SelectedValue = String.Format("{0:D}", ConnectToProject_ID);

保存する準備ができたら、「OnItemInserting」イベントを使用します。

FormView fv = (FormView)sender;
DropDownList ddl = (DropDownList)fv.FindControl("ProjectList");
e.Values["ConnectToProject_ID"] = ddl.SelectedValue;

または「OnItemUpdating」

保存する準備ができたら、「OnItemInserting」イベントを使用します。

FormView fv = (FormView)sender;
DropDownList ddl = (DropDownList)fv.FindControl("ProjectList");
e.NewValues["ConnectToProject_ID"] = ddl.SelectedValue;
于 2008-10-08T16:13:28.797 に答える
0

Sounds like the controls aren't being databound properly after the postback.

Are you databinding the first dropdown in the page or in the codebehind? If codebehind, are you doing it in on_init or on_load every time?

There might be an issue of the SelectedValue of the second drop down being set to a non-existent item after the postback.

于 2008-08-22T16:30:08.337 に答える
0

2 番目のドロップダウンがデータバインドされたコントロール (リピーターなど) にない限り、SelectedValue を何にバインドしようとしているのかわかりません。どうやら、どちらも .NET ではありません。エラーが発生している可能性が高いためです。

Connect_ToProjectId はどこから来るのでしょうか?

于 2008-08-25T03:09:01.967 に答える