4

私はasp.netを初めて使用し、フォームビュー内でドロップダウンリストコントロールを使用して、その値を関連するsqldatasourceに渡すことに問題があります。以下のコードを使用すると、次の例外が発生します

例外の詳細: System.InvalidOperationException: ControlParameter 'categoryId' でコントロール 'ddlCategory' が見つかりませんでした。

フォームビュー内のドロップダウン リスト。

      <asp:DropDownList ID="ddlCategory" DataSourceID="ObjectDataSourceCategory" DataTextField="NAME" DataValueField="ID" runat="server" />

SQL データ ソース

     <asp:ObjectDataSource ID="sqlDataSourceItem" TypeName="Item" runat="server"
      SelectMethod="getItem"
      InsertMethod="insertItem"
      UpdateMethod="updateItem">
     <SelectParameters>
        <asp:QueryStringParameter QueryStringField="id" Name="id" />
     </SelectParameters>
     <InsertParameters>
        <asp:ControlParameter ControlID="ddlCategory" Name="categoryId" PropertyName="selectedValue" />
     </InsertParameters>
     </asp:ObjectDataSource>

そして、私はこの問題の解決策を見つけました。制御パラメーターで DDL の ID を変更しました。これはそのコントロールの最終的に生成された ID であるため、以下のように機能します。しかし、もっと簡単で良い方法があるに違いないと思います。どんな助けでも感謝します。

    <asp:ControlParameter ControlID="ctl00$main$frmViewItem$ddlCategory" Name="categoryId" PropertyName="selectedValue" />
4

2 に答える 2

0

この答えはあなたの問題の解決策を提供します:

再帰的な方法が必要ですfindcontrol()

于 2012-12-26T17:22:50.007 に答える
0

これは、ddlCategory が formview 内にあり、マスター ページを使用しているためです。最善の方法は、マスター ページの「FindControl」関数を上書きすることです。詳細については、次のリンクを参照してください。

http://geekswithblogs.net/AzamSharp/archive/2006/08/27/89475.aspx

于 2012-12-26T16:34:36.973 に答える