【发布时间】:2010-09-20 08:27:01
【问题描述】:
我正在使用 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" />
有没有办法在列表框中显示值为 null 的“无”?我已经想到了几个选项,哪个是最好的还是有其他的?
为 SQL“SELECT PersonId, Name FROM People UNION SELECT Null, 'NONE'”创建一个存储过程
为“NO PARENT”添加一个复选框
在 DropDownList 的标记中放置一个 ListItem
在 DataBound 事件处理程序上添加项目
我找到了更好的方法,在标记中添加一个 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 方式是最好的,因为它是在标记中定义的,不需要任何代码...
【问题讨论】:
-
如果没有人发布任何其他内容,我将接受事件处理程序的回答...