2009-10-03 23 views
0

好的,我將嘗試給出一個非常詳盡的描述,說明我需要完成什麼。.NET對象數據源,DetailsView和DropDownList

首先,我定義了一個LinqToSQL datacontext,它有一個僱員對象。然後我創建了一個BLL(部分員工)來處理我的驗證,插入,更新等。Everthing在這一點上是很好的。接下來,我創建了一個具有綁定到我的Employee對象的select/update/insert方法的對象數據源的detailsview。這也不錯,數據會像它應該的一樣,更新,像插入一樣,除了一個問題。我在詳細信息視圖中的下拉列表中遇到問題。這些是必填字段,不能爲空。當這個約束被刪除時,代碼的功能就很好。

詳細信息視圖的代碼片段 - 縮寫爲顯示相關信息的字段。

<asp:DetailsView ID="grd_empDetails" runat="server" DataSourceID="empDataSource" DataKeyNames="EmployeeID" DefaultMode="Insert" AutoGenerateRows="false"> 
      <Fields> 
       <asp:BoundField HeaderText="First Name" DataField="FirstName" /> 
       <asp:TemplateField HeaderText="Type of Employee"> 
        <ItemTemplate> 
         <asp:DropDownList ID="empType" runat="server" DataValueField="empType" AppendDataBoundItems="true"> 
          <asp:ListItem Text="Full Time" Value="1" /> 
          <asp:ListItem Text="Part Time" Value="2" /> 
          <asp:ListItem Text="Subcontractor or 1099" Value="3" /> 
          <asp:ListItem Text="Intern" Value="4" /> 
         </asp:DropDownList> 
        </ItemTemplate>     
       </asp:TemplateField> 
       <asp:CommandField ShowInsertButton="true" ShowCancelButton="true" />  
      </Fields> 
     </asp:DetailsView> 

當調用insert方法時,empType始終返回爲Nothing(empType是數據庫字段)。

將dropdownlist的值附加到我的對象的正確方法是什麼,以便它可以在數據庫中正確創建?我的大部分搜索都會告訴我如何將下拉列表綁定到對象數據源,但這不是我需要做的。這是一個基本的下拉列表,4個項目永遠不會改變。在這裏只使用一個標準的HTML選擇標籤是否有意義,或者甚至會有幫助。

感謝您的關注,如果您需要更多信息,請告知我。

回答

1

看起來這很簡單,但VS2008 IDE沒有告訴我這是一個選項。爲了綁定到ObjectDataSource,你必須做這樣的事情:

<asp:TemplateField HeaderText="Type of Employee"> 
        <ItemTemplate> 
         <asp:DropDownList ID="empType" runat="server" DataValueField="empType" SelectedValue='<%#Bind("empType") %>'> 
          <asp:ListItem Text="Full Time" Value="1" /> 
          <asp:ListItem Text="Part Time" Value="2" /> 
          <asp:ListItem Text="Subcontractor or 1099" Value="3" /> 
          <asp:ListItem Text="Intern" Value="4" /> 
         </asp:DropDownList> 
        </ItemTemplate>     
       </asp:TemplateField> 

下拉列表的的SelectedValue一部分沒有顯示出來,我作爲下拉列表一個有效的標籤,但是VS不在編譯或運行時扼殺它,最重要的是它起作用!

0

一切看起來不錯,但是當你加載它時,下拉列表最初是否填充了?如果沒有,請嘗試在加載時設置其中一個項目進行選擇,否則如果用戶沒有選擇任何項目,它可能不會返回任何值。

+0

那是什麼讓我瘋狂!列表正確顯示,但無法從中取回值。我經過一些狡猾的谷歌搜索後發現了它 - 它在上面發佈。感謝您的期待! – Tommy 2009-10-03 21:14:38