在文本框中传递null无效

时间:2015-04-22 17:06:14

标签: asp.net gridview sqldatasource

您好我试图在我的日期文本框Textbox 3和Textbox 4中传递空值,但我无法这样做。请让我知道我做错了什么。基本上我需要的是当页面加载和文本框为空时我需要Gridview加载整个表。目前它只在我输入日期范围时加载,但是如果我将日期文本框留空我得到一个空页面。我有一个下拉日历控件的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传递给数据库,以便在页面加载时看到完整的表

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

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

  

'System.Web.UI中不允许使用文字内容('&lt; asp:ControlParameter ControlID =“TextBox4”Name =“enddate”SqlDataSource2.CancelSelectOnNullParameter =“False”PropertyName =“Text”/&gt;') .WebControls.ParameterCollection'

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

或此属性: DefaultValue =&#34;%&#34;

UITableView