0

ボタンを介して値が TableC に送信される 2 つのリストボックスがあります。

<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 は失敗します。ステートメントは終了されました。

ただし、値は完全に入力されたリストボックスから取得されるため、null は発生しません。ヘルプ?

4

1 に答える 1

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();
}
于 2013-04-09T00:25:44.643 に答える