Я пытаюсь получить конкретное id из базы данных, но по некоторым причинам я получаю нулевое значение в id.
При загрузке страницы:
string id = Request.QueryString["ProductID"];
protected void Button1_Click(object sender, EventArgs e)
{
if (Session["myCart"] == null)
{
myCart = new Cart();
Session["myCart"] = myCart;
}
string id = Request.QueryString["ProductID"];
int id2 = this.DataList1.SelectedIndex;
myCart = (Cart)Session["myCart"];
DataTable dt = ds.SelectQuery("SELECT * FROM Products where ProductID = '" + id + "'");
DataRow row = dt.Rows[0];
myCart.Insert(new CartItem(int.Parse(id), row["ProductName"].ToString(), int.Parse(row["UnitPrice"].ToString()), 1));
}
@Rahul Но в чем проблема Request.QueryString["ProductID"] как получить идентификатор без нуля
Вы не передаете значение строки запроса
@ Рахул и что это значит ??
как выглядит ваш URL?
@G_S http://localhost:64380/Phone.aspx
ваш URL должен выглядеть так http://localhost:64380/Phone.aspx?ProductID=123
В вашем URL-адресе нет строки запроса с именем ProductID. И поэтому, запрашивая с нулевым значением базу данных, вы не получаете действительного значения. Действительный URL в этом случае будет локальный: 64380/Phone.aspx?ProductID=12345.
но в магазине есть много продуктов. так как в URL будет идентификатор всех из них





Итак, что я предлагаю: добавьте кнопку ссылки ниже в шаблон вашего элемента.
<asp:LinkButton ID = "LinkButton1" runat = "server" CommandName = "select">Select</asp:LinkButton>
Затем обработайте событие SelectedIndexChange в файле кода:
protected void DataList1_SelectedIndexChanged(object sender, EventArgs e)
{
int index = DataList1.SelectedIndex;
//Your product id should be bound to a label in the item template
Label lbl = (Label)DataList1.Items[index].FindControl("IDoftheControlcontainingid");
string id=lbl.Text;
//use the id variable to get the product and add to cart. your old code
if (Session["myCart"] == null)
{
myCart = new Cart();
Session["myCart"] = myCart;
}
myCart = (Cart)Session["myCart"];
DataTable dt = ds.SelectQuery("SELECT * FROM Products where ProductID = '" + id + "'");
DataRow row = dt.Rows[0];
myCart.Insert(new CartItem(int.Parse(id), row["ProductName"].ToString(), int.Parse(row["UnitPrice"].ToString()), 1));
}
но я не хочу перемещать другую страницу. я хочу заполнить свою корзину покупок, и когда я нажму на cart.aspx, он покажет мне все товары, которые находятся в корзине.
может быть, я не понимаю вашего вопроса. но вы ничего не можете получить из строки запроса, пока не передадите что-то в нее.
так что вы можете помочь мне получить идентификатор из базы данных? я хочу, чтобы выбранный элемент из идентификатора списка данных был выбран
попробуйте вышеуказанное решение.
Это потому что
Request.QueryString["ProductID"]естьnull