在数据绑定上捕获空值

时间:2011-08-24 10:47:42

标签: c# asp.net data-binding

我有一个从SQL select语句填充的下拉列表。 select语句过滤“bit”设置为false的项目,但项目虽然仍在数据库中,但仍被隐藏。

我的问题是;当某个商品缺货或隐藏(比特=假)时,用户可能仍然拥有现在隐藏的商品,因此会引发错误。如何以及在何处捕捉到这一点,显示原始项目或将值设置为默认值?

protected void GradeDropDownList_DataBinding (object sender, EventArgs e)
{
    var ddl = (DropDownList)(sender);
    var a = ((Label)MyDetailsView.FindControl("GradeLabelEdit")).Text;
    a = a.Trim();
    if (a != "") { ddl.SelectedValue = a; }
}

选择陈述;

    <asp:SqlDataSource ID="getGrade" runat="server" ConnectionString="<%$ ConnectionStrings:CasesTimeConnection %>"
    SelectCommand="SELECT [gradeID], [gradeText] FROM [user_grades] WHERE ([visibleState] = @visibleState)">
    <SelectParameters>
        <asp:Parameter DefaultValue="True" Name="visibleState" Type="Boolean" />
    </SelectParameters>
</asp:SqlDataSource>

在页面中;

<EditItemTemplate>
<asp:DropDownList ID="GradeDropDownList" runat="server" DataSourceID="getGrade" DataTextField="gradeText" DataValueField="gradeID" OnDataBinding="GradeDropDownList_DataBinding" OnSelectedIndexChanged="GradeDropDownList_SelectedIndexChanged">
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="gradeLabel" runat="server" Text='<%# Bind("gradeText") %>'></asp:Label>
</ItemTemplate>

1 个答案:

答案 0 :(得分:0)

检索记录时检索LastModifiedDate,并在尝试更新记录时检查现有的lastModifiedDate值和检索到的值。如果它们不同,则抛出警告信息/显示新数量。

谢谢

沙市