2010-09-20 182 views
1

我正在使用LINQ to SQL並希望能夠選擇一個父代或無父代。假設我有一個包含PersonId,Name和ParentId列的People表。在ASP中,我想輸入名稱,選擇一個父項,然後單擊'添加'創建一個新的人員記錄,但我也希望能夠將ParentId留空。不要問爲什麼,這只是我想要做的簡單解釋。ASP.NET DropDownList綁定到數據但允許空值?

<asp:LinqDataSource ID="LinqPeople" runat="server" 
    ContextTypeName="MyDataContext" EntityTypeName="" 
    Select="new (PersonId, Name)" TableName="People"/> 
<asp:TextBox ID="textName" runat="server" /> 
<asp:DropDownList runat="server" ID="dropParent" 
    DataSourceID="LinqPeople" DataTextField="Name" DataValueField="PersonId" /> 
<asp:Button ID="buttonAddPerson" runat="server" Text="Add" /> 

有沒有什麼辦法可以在列表框中顯示值爲null的'None'?我想過幾個選擇,哪個最好,還有其他的嗎?

  1. 創建的SQL存儲過程 「選擇PERSONID,名字從人們UNION SELECT NULL, '無'」

  2. 添加複選框 「無父」 的

  3. 把一個ListItem在標記爲DropDownList

  4. 添加的數據綁定事件處理程序的項目

我發現了一個更好的辦法,在標記添加列表項:

<asp:LinqDataSource ID="LinqPeople" runat="server" 
    ContextTypeName="MyDataContext" EntityTypeName="" 
    Select="new (PersonId, Name)" TableName="People"/> 
<asp:TextBox ID="textName" runat="server" /> 
<asp:DropDownList runat="server" ID="dropParent" 
     DataSourceID="LinqPeople" DataTextField="Name" DataValueField="PersonId"> 
    <asp:ListItem Value="">(none)</asp:ListItem> 
</asp:DropDownList> 
<asp:Button ID="buttonAddPerson" runat="server" Text="Add" /> 

我找不到任何辦法然而,返回的SelectedValue實際值「NULL」,但我能處理的,我猜。我認爲ListItem的方式是最好的,因爲它是在標記中定義的,並且不需要任何代碼...

+0

無論誰回答事件處理程序我打算接受,如果沒有人發佈其他任何東西...... – 2010-09-22 17:31:20

回答

0

不要以爲你可以設置NULL的值,因爲它是一個字符串類型。

我不喜歡NULL的檢查,通常我會使用一些沒有意義的東西,比如-1或者其他東西,然後檢查它。你也可以假設你選擇的索引是0,但是,如果你不關注整個應用程序,那麼這可能會在代碼的其他地方引起問題。

相關問題