если для вида сетки задано отображение значений из массива сеансовых массивов, появляется следующая ошибка: «Объект должен реализовывать IConvertible». в с # - PullRequest
0 голосов
/ 15 мая 2009

, когда пользователь выбирает «добавить в корзину», itemID этого элемента строки добавляется в массив, который затем сохраняется в сеансе.

на странице корзины покупок у меня есть вид сетки, который читает имя, цену из базы данных, где сессия ["массив"] = itemID

ошибка отображается при загрузке страницы корзины.

Все, что я хочу сделать, - это получить список элементов, выбранных пользователем, который находится в массиве, и заполнить их в виде таблицы на странице корзины.

открытый частичный класс Drama_k: System.Web.UI.Page { Массив ArrayList;

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["array"] == null)
    {
        array = new ArrayList();
        Session.Add("array", array);
    }
    else
        array = Session["array"] as ArrayList;
    GridView1.DataSource = array;
    GridView1.DataBind(); //Edit 2           
}



protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "AddToCart")
    {
        int index = Convert.ToInt32(e.CommandArgument);
        array.Add(GridView2.DataKeys[index].Value.ToString());
    }
}

}

Страница корзины покупок имеет только вид сетки, где оператор sql равен

ВЫБРАТЬ [ItemID], [Имя], [RelDate], [Цена], [Статус] ОТ [item_k] ГДЕ ([ItemID] = @ItemID)

значение ([ItemID] = @ItemID) равно Session ("array")

в чем здесь проблема?

заранее спасибо.

// редактировать 2

ArrayList tmpArrayList = new ArrayList(); 
tmpArrayList = (ArrayList)Session["array"]; 
string itemIDs = string.Empty; 
foreach (object itemID in tmpArrayList) 
{ 
   itemIDs += itemID.ToString() + ','; 
} 
itemIDs = itemIDs.Substring(0, itemIDs.Length - 1); 

где itemID теперь содержат значения "3,16"

Я поместил строку запроса в окне построителя запросов, и я получил эту ошибку когда я запускаю сайт.

"Invalid column name ' + itemIDs + '. "

1 Ответ

0 голосов
/ 15 мая 2009

Похоже, вы пытаетесь назначить ArrayList в качестве параметра для вашего запроса, что невозможно. Вам нужно собрать строку, которая содержит список содержимого ArrayList, разделенных запятыми, и использовать его для построения запроса, а не передавать его в качестве параметра. Обратите внимание, что для этого также потребуется изменить строку запроса, используя WHERE ... IN вместо WHERE ... =.

string itemIDs = string.Empty;
foreach (int itemID in array)
{
    itemIDs += itemID.ToString() + ',';
}
itemIDs = itemIDs.Substring(0, itemIDs.Length - 1);  // remove last comma

string query = "SELECT [ItemID], [Name], [RelDate], [Price], [Status] FROM [item_k] WHERE [ItemID] IN (" + itemIDs + ")"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...