От DataList к странице сведений

Мой сценарий: у меня есть DataList с некоторыми продуктами. Мой SqlDataSource принимает все значения, но я отображаю только изображение, имя и цену. Метка ProductID, видимая в шаблоне элемента, имеет значение false.

Я добавил кнопку изображения для каждого продукта, и я хотел бы нажать эту кнопку и перейти на страницу с более подробной информацией о каждом продукте. Мое решение - передать ProductID на страницу сведений. Но я что-то упускаю и не могу понять, как это сделать.

Моя кнопка:

<asp:ImageButton ID="ImageButton1" runat="server" CommandArgument='<%# Eval("productID")%>'
                                ImageUrl="~/Graphics/profile_button.png" onclick="ImageButton1_Click" />

Затем нажмите:

protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
        {

            string productID = ???????
            string url;

            url = "~/ProductDetails.aspx?productid=" + ProductID;
            Response.Redirect(url);
        }

Как видите, я не знаю, как получить CommandArgument. Как это сделать?


person dargod    schedule 07.03.2012    source источник


Ответы (2)


Думаю, я понял. Использовать

OnCommand="ImageButton1_Click"

(вместо onclick) в разметке кнопки изображения и

protected void ImageButton1_Click(object sender, CommandEventArgs e)
{
     string productID = e.CommandArgument.ToString(); 
     //..
}
person AGuyCalledGerald    schedule 07.03.2012
comment
Пробовал, сразу после публикации, но: Ошибка 1 «System.Web.UI.ImageClickEventArgs» не содержит определения для «CommandArgument», и метод расширения «CommandArgument», принимающий первый аргумент типа «System.Web.UI.ImageClickEventArgs», не может быть найденным (вам не хватает директивы using или ссылки на сборку?) - person dargod; 07.03.2012
comment
Ааа да :) Хорошо работает, спасибо! Я также искал и нашел несколько тем с проблемой между OnClick и OnCommand в ImageButton. Еще раз спасибо. - person dargod; 07.03.2012

Просто используйте следующее.

Не берите кнопку изображения, просто возьмите элемент управления изображением и поместите его между тегом привязки.

<a href="~/ProductDetails.aspx?productid=<%#Eval("ProductID")"><asp:Image ID="img" runat="server" ImageUrl="="~/Graphics/profile_button.png"> </a>    

Поместите этот код в список данных. Это более легкий код.

person Mohan Sharma    schedule 07.03.2012