asp.net insertCommand导致NULL值

时间:2013-04-08 21:26:16

标签: asp.net null sql-insert

我有两个列表框,其值通过按钮发送到TableC。

<asp:SqlDataSource ID="sql1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionDataBase %>" 
        SelectCommand="SELECT [Name] + ' (' + [CNbr] + ')' AS FullName, [CNbr] AS CNum FROM [TableA] ORDER BY [Name]">
    </asp:SqlDataSource>

    <asp:ListBox ID="lst1" runat="server" DataSourceID="sql1" DataTextField="FullName" DataValueField="CNum" AutoPostBack="true">
    </asp:ListBox>

    <asp:SqlDataSource ID="sql2" runat="server" 
                ConnectionString="<%$ ConnectionStrings:ConnectionDataBase %>"  
                InsertCommand="INSERT INTO [TableB] ([CNbr], [RDate]) VALUES (@CNbr, @RDate)" 
        <InsertParameters>
            <asp:Parameter Name="CNbr" Type="String" />
            <asp:Parameter Name="RDate" Type="DateTime" />
        </InsertParameters>

        <asp:ImageButton ID="ibnCheckOutBtn" runat="server" 
            ImageUrl="./images/vidCheckOutButton.png" onclick="ibnCheckOutBtn_Click"   />   

ASPX.CS文件:

protected void ibnBtn_Click(object sender, ImageClickEventArgs e)
{
    sql2.Insert();
}

我真的不知道C#,而我的课程并不涵盖大多数C#,所以我正在寻找一种不会使用大量后代码的解决方案。我得到的错误是:

无法将值NULL插入列'CNbr',表'TableB';列不允许空值。 INSERT失败。该语句已终止。

但是,不应出现空值,因为值是从完全填充的列表框中获取的。帮助

1 个答案:

答案 0 :(得分:1)

您需要以类似的方式将值分配给sql2插入参数:

protected void ibnBtn_Click(object sender, ImageClickEventArgs e)
{
    sql2.InsertParameters["CNbr"].DefaultValue = this.FindControl("lst1").SelectedValue;
    sql2.InsertParameters["RDate"].DefaultValue = DateTime.Now.ToString();
    sql2.Insert();
}