2013-04-08 67 views
0

我有兩個列表框,其值通過按鈕發送到TableC中。asp.net insertCommand導致NULL值

<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失敗。該語句已終止。

但是,不應出現空值,因爲值是從完全填充的列表框中獲取的。幫幫我?

+0

變量必須具有相同的名稱。可以使用CNbr或cnum,但不能同時使用。 [CNbr] AS CNum – Nikki9696 2013-04-08 21:32:48

+0

那沒用... – user963070 2013-04-09 02:30:06

+0

其他帖子去哪了? – user963070 2013-04-09 02:31:04

回答

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(); 
} 
+0

嘿,我在.SelectedValue下得到一條紅色的波浪線。 ,我不知道是什麼原因。 – user963070 2013-04-09 02:11:01

+0

改變this.FindControl(「lst1」)。SelectedValue;到((ListBox)this.FindControl(「lst1」))。SelectedValue ;.我忘了演員。根據您的aspx頁面結構,如果FindControl不起作用,您可能還需要調整「找到」列表框的方式。 – FastGeek 2013-04-09 10:25:52