我正在使用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?我想过几个选项,哪个最好还是有其他选择?
为SQL创建存储过程“SELECT PersonId,Name FROM People UNION SELECT Null,'NONE'”
为“NO PARENT”添加CheckBox
将ListItem放入DropDownList的标记
在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方式是最好的,因为它在标记中定义,不需要任何代码......
答案 0 :(得分:0)
不要认为你可以设置NULL的值,因为它是一个字符串类型。
我不喜欢检查NULL,通常,我会使用一些没有意义的东西,比如-1或者其他东西并检查它。您也可以假设您选择的索引为0,但如果您没有在整个应用程序中执行操作,则可能会导致代码中的其他位置出现问题。