2012-01-12 3 views
1

まあ、GridViewには、DropDownListを持つ 'TemplateField'のような編集可能なフィールドがあります。 マイコード:RoomId、RoomNumber:GridView:GridViewの基底データの編集

<Columns> 
    ... 
    <asp:TemplateField SortExpression="Room" HeaderText="Room"> 
     <EditItemTemplate> 
      <asp:DropDownList ID="DropDownList1" Runat="server" DataSourceID="categoryDataSource" DataTextField="RoomNumber" DataValueField="RoomNumber" SelectedValue='<%# Bind("Room") %>'> 
      </asp:DropDownList> 
     </EditItemTemplate> 
    </asp:TemplateField> 
    <ItemTemplate> 
     <asp:Label Runat="server" Text='<%# Bind("Room") %>' ID="Label1"></asp:Label> 
    </ItemTemplate> 
</Columns> 

私のDBは、行を持つテーブルの部屋を持っています。 私のDropDownListでは、テーブルルームからすべての値を設定しようとしています。 テーブルには3行(RoomId、RoomNumber)があります。 2~12; 3 - 24

しかし、エラーに従って書く:

'DropDownList1' has a SelectedValue which is invalid because it does not exist in the list of items. 

パラメータ名:私が誤った場所値 をたぶん誰もが知っていますか?

編集:ここではは、SqlDataSourceコントロールコード

<asp:SqlDataSource ID="categoryDataSource" Runat="server" 
    SelectCommand="SELECT [RoomId], [RoomNumber] FROM [Rooms] ORDER BY [RoomNumber]" 
    ConnectionString="Data Source=.\MSSQLSERVERR2;AttachDbFilename=|DataDirectory|\ARMDB.MDF;Integrated Security=True;User Instance=True"> 
</asp:SqlDataSource> 

答えて

3

誤りであるあなたは、ドロップダウンリストに、選択として設定しようとしている値が存在しないことを示しています。私はこれがドロップダウンリストの値に間違ったフィールドを選択したり、間違った値を設定しなかったことが主な原因であると考えています。例えば

は、あなたのケースでは、おそらく、あなたはそれに応じて

<asp:DropDownList ID="DDL1" Runat="server" DataSourceID="categoryDataSource" 
    DataTextField="RoomNumber" DataValueField="RoomId" 
    SelectedValue='<%# Bind("Room") %>'> 

あなたは、ドロップダウンリストの値フィールドをバインドする必要があるので、参照されるテーブルにRoomId(やないRoomNumber)を格納していますDataValueField値 - RoomIdで部屋番号ではありません。

+0

コード(Bind("Room")は、部屋番号を返すために起こっていると仮定して)ここ(Googleドキュメント)である:https://docs.google.com/document/d/1R7FU5Ka85G2PAbJJ5vj3MM1Tcd4rDNI-ETOw8oSrnxw/edit – Leo

+0

それは動作しません...私はトラブルがどこにあるのか分からない – Leo

関連する問題