ASP.NET DropDownList绑定到数据但允许空值?

时间:2010-09-20 08:27:02

标签: asp.net linq

我正在使用LINQ to SQL,并希望能够选择父级或无父级。假设我有一个包含PersonId,Name和ParentId列的People表。在ASP中我想输入名称,选择父项并单击“添加”以创建新的个人记录,但我也希望能够将ParentId保留为空。不要问为什么,这只是我想要做的简单解释。

<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" />

有没有办法在列表框中显示'None',其值为null?我想过几个选项,哪个最好还是有其他选择?

  1. 为SQL创建存储过程“SELECT PersonId,Name FROM People UNION SELECT Null,'NONE'”

  2. 为“NO PARENT”添加CheckBox

  3. 将ListItem放入DropDownList的标记

  4. 在DataBound事件处理程序

  5. 上添加项目

    我找到了一种更好的方法,在标记中添加ListItem:

    <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方式是最好的,因为它在标记中定义,不需要任何代码......

1 个答案:

答案 0 :(得分:0)

不要认为你可以设置NULL的值,因为它是一个字符串类型。

我不喜欢检查NULL,通常,我会使用一些没有意义的东西,比如-1或者其他东西并检查它。您也可以假设您选择的索引为0,但如果您没有在整个应用程序中执行操作,则可能会导致代码中的其他位置出现问题。