在文本框中传递 null 不起作用

Passing null in textboxes not working

您好,我正在尝试在我的日期文本框文本框 3 和文本框 4 中传递空值,但我无法这样做。请让我知道我做错了什么。基本上我需要的是当页面加载并且文本框为空时我需要 Gridview 加载整个 table 。目前它只在我输入日期范围时加载,但如果我将日期文本框留空,我会得到一个空的 page.I 有一个 Ajax 日历扩展用于下拉日历控件也附加到这两个文本框.不知道这是否是问题所在。请帮忙..

这是代码

<asp:SqlDataSource ID="SqlDataSource2" runat="server"
    ConnectionString="<%$ ConnectionStrings:IngestConnectionString %>"
    SelectCommand="SELECT ID, Story_number, Date, Memory_card, Story_Name FROM Library WHERE (Story_Name LIKE '%' + @Story_Name + '%') AND (Story_number LIKE '%' + @Story_number + '%') AND (@startdate IS NULL OR @startdate = '' OR Date >= @startdate) AND (@enddate IS NULL OR @enddate = '' OR Date <= @enddate)">
    <SelectParameters>
        <asp:ControlParameter ControlID="TextBox1" 
            Name="Story_Name"
            PropertyName="Text" 
            DefaultValue="%" />
        <asp:ControlParameter ControlID="TextBox2" 
            DefaultValue="%" 
            Name="Story_number"
            PropertyName="Text" />
        <%--<asp:ControlParameter ControlID="DropDownList1" 
                DefaultValue="%" 
                Name="Memory_card"
                PropertyName="SelectedValue" />--%>
        <asp:ControlParameter ControlID="TextBox3" 
            Name="startdate" 
            ConvertEmptyStringToNull="true"
            PropertyName="Text" />
        <asp:ControlParameter ControlID="TextBox4" 
            Name="enddate" 
            ConvertEmptyStringToNull="true" 
            PropertyName="Text" />
    </SelectParameters>
</asp:SqlDataSource>

当我在默认值中放入一些荒谬的日期范围时,它会起作用,但我无法让它将 null 传递给数据库,以便我在页面加载时看到完整的 table

<asp:ControlParameter ControlID="TextBox3" 
    Name="startdate" 
    ConvertEmptyStringToNull="true" 
    DefaultValue="1/1/1977"
    PropertyName="Text" />
<asp:ControlParameter ControlID="TextBox4" 
    Name="enddate" 
    ConvertEmptyStringToNull="true" 
    DefaultValue="1/1/2100"
    PropertyName="Text" />

更新:

在哪里添加此代码?我像这样在控制参数中添加它

<asp:ControlParameter ControlID="TextBox4" 
    Name="enddate" 
    SqlDataSource2.CancelSelectOnNullParameter="False" 
    PropertyName="Text" />

当我这样做时它给我以下错误

Literal content ('<asp:ControlParameter ControlID="TextBox4" Name="enddate" SqlDataSource2.CancelSelectOnNullParameter="False" PropertyName="Text" />') is not allowed within a 'System.Web.UI.WebControls.ParameterCollection'

CancelSelectOnNullParameter是一个属性的SQLdatasource控件,不是控件中包含的参数:

<asp:SqlDataSource ID="SqlDataSource2" runat="server"
    CancelSelectOnNullParameter="False"
    ConnectionString="<%$ ConnectionStrings:IngestConnectionString %>"
    SelectCommand="SELECT ID, Story_number, Date, Memory_card, Story_Name FROM Library WHERE (Story_Name LIKE '%' + @Story_Name + '%') AND (Story_number LIKE '%' + @Story_number + '%') AND (@startdate IS NULL OR @startdate = '' OR Date >= @startdate) AND (@enddate IS NULL OR @enddate = '' OR Date <= @enddate)">
        <SelectParameters>
            <asp:ControlParameter ControlID="TextBox1" ...

或这个属性:DefaultValue="%"

<asp:ControlParameter ControlID="TxtSearch" Name="Title" PropertyName="Text" Type="String" DefaultValue="%" />