0

データベースにデータを送信するために使用している別のクラスにメソッドがあります。その方法もここにあります。

public Int32 AddOrder(clsStock NewItem)
{
    //this function takes the data passed via NewItem
    //and passes it to the parameters for the stored procedure
    //
    //create an instance of the data dictionary
    clsDataDictionary DD = new clsDataDictionary();
    //create an instance of the object class
    Int32 ReturnValue;
    //create an instance of the data conduit
    clsDataConduit Items = new clsDataConduit();
    //pass the data for this address
    Items.AddParameter(DD.sproc_tblOrders_Add_AuthId, NewItem.AuthId);
    Items.AddParameter(DD.sproc_tblOrders_Add_ItemId, NewItem.ItemId);
    Items.AddParameter(DD.sproc_tblOrders_Add_DateOrdered, NewItem.DateOrdered);
    Items.AddParameter(DD.sproc_tblOrders_Add_Cancel, NewItem.Cancel);
    //execute the stored procedure
    ReturnValue = Items.Execute(DD.sproc_tblOrders_Add);
    //return the primary key value
    return ReturnValue;
}

リストボックスを反復処理し、リストボックス内の各項目に対してそのメソッドを実行するために使用している aspx ページのメソッドもここにあります。

protected void btnSubmit_Click1(object sender, EventArgs e)
{
    //create an instance of the collection class
    clsStockCollection Items = new clsStockCollection();

    foreach(int id in lstAdded.Items)
    {
        TheItem.AuthId = 5;
        TheItem.ItemId = Convert.ToInt32(lstAdded.Items[id].Value);
        TheItem.Cancel = "false";
        Items.AddOrder(TheItem);
    }
    Response.Redirect("Order.aspx");
}

Web サイトを実行して btnSubmit を押すと、次のエラーが発生します。

"Specified cast is not valid"ページのメソッドにありaspxます(2番目のpastebinファイル)

これはなぜですか?

4

2 に答える 2

1

こんな感じになります

foreach(ListItem item in lstAdded.Items)
{
    TheItem = new clsStock();
    TheItem.AuthId = 5;
    TheItem.ItemId = Convert.ToInt32(item.Value);
    TheItem.Cancel = "false";
    Items.AddOrder(TheItem);
}
于 2013-03-19T05:00:08.567 に答える
0

タイプフィールドを介してListBox.Itemsを反復処理しています。intListBox.Itemsはです。実行できるのは、次のようなキーワードListItemCollectionを使用して暗黙的に型指定された変数を使用することです。var

foreach(var id in lstAdded.Items)
{
    TheItem.AuthId = 5;
    TheItem.ItemId = Convert.ToInt32(id.Text); //Change here
    TheItem.Cancel = "false";
    Items.AddOrder(TheItem);
}

現在、foreachループ内のインデックスとして検討しているようですが、lstAdded

于 2013-03-19T04:56:57.953 に答える