2012-03-08 3 views
2

Я работаю над проектом C#/ASP 4.0, где я пытаюсь создать приложение корзины покупок.ASP- Получить значение GridRow/Метод OnClick

Существует страница GridView на моей странице, в которой отображаются все элементы, и я хочу, чтобы пользователь мог нажать кнопку «Добавить в корзину» в этом GridView, который, очевидно, добавит элемент в свои корзина.

У меня возникают проблемы с настройкой события OnClick для gridview? Это похоже не доступно в меню «Событие» в «Свойствах». Кроме того, я не могу понять, как получить конкретную строку. У меня есть метод, который делает это ...

int productID = Convert.ToInt32(GridView1.Rows[n].Cells[0].Text); 
AddToCart(productID); 

Но я понятия не имею, как выяснить, п, или как иметь этот метод не дозвонились, когда они нажимают что ButtonField в GridView.

ответ

1

Вы можете сделать это:

Во-первых, добавить поле шаблона к GridView:

<asp:TemplateField HeaderText="Add to Cart"> 
    <ItemTemplate> 
     <asp:Button id="bthAddToCart" 
       CommandArgument'<%#Eval("ProductID")%>' 
       OnClick="bthAddToCart_Click" 
       Text="Add to Cart" 
       runat="server"/> 
    </ItemTemplate> 
</asp:TemplateField> 

Теперь добавьте обработчик для замковое события кнопки:

protected void bthAddToCart_Click(object sender, EventArgs e) 
{ 

    Button button = (Button)sender; 
    int productID = Convert.ToInt32(button.CommandArgument); 
    AddToCart(productID); 
} 
+0

Что такое столбец шаблона? – sab669

+0

@ user1189566 в DataGrid элемент называется TemplateColumn, в GridViews эквивалент - это поле шаблона. См. Здесь дополнительную информацию: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.templatecolumn.aspx – Icarus

0

Используйте событие OnRowCommand вида сетки. Подробнее: here

1

Вы можете использовать поле шаблонов, как это:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowCommand="GridView1_RowCommand"> 
<Columns> 
    <asp:TemplateField HeaderText="Header Text Here"> 
     <ItemTemplate> 
      CONTROL TO SHOW COLUMN DATA 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="Header Text Here"> 
     <ItemTemplate> 
      CONTROL TO SHOW COLUMN DATA 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="Header Text Here"> 
     <ItemTemplate> 
      CONTROL TO SHOW COLUMN DATA 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="Header Text Here"> 
     <ItemTemplate> 
      CONTROL TO SHOW COLUMN DATA 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderStyle-Width="30px"> 
     <ItemTemplate> 
      <asp:Button ID="btnAddToCart" runat="server" Text="Add To Cart" CommandName="AddToCart" 
       CommandArgument='<%# Eval("ProductID") %>' /> 
     </ItemTemplate> 
    </asp:TemplateField> 
</Columns> 
<EmptyDataTemplate> 
    No Data Found. 
</EmptyDataTemplate> 
</asp:GridView> 

Тогда на вашем коде позади:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "AddToCart") 
    { 
     int ProductID = Convert.ToInt32(e.CommandArgument); 
     AddToCart(ProductID); 
    } 
} 

Надеется, что это помогает! Удачи!

0

Вы должны использовать OnRowCommand Event для Gridview. Используйте следующий код:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowCommand="GridView1_RowCommand"> 
<Columns> 
    <asp:TemplateField HeaderText="Header Text Here"> 
     <ItemTemplate> 
      CONTROL TO SHOW COLUMN DATA 
     </ItemTemplate> 
    </asp:TemplateField> 

<asp:TemplateField HeaderStyle-Width="30px"> 
     <ItemTemplate> 
      <asp:Button ID="btnAddToCart" runat="server" Text="Add To Cart" CommandName="AddToCart" 
       CommandArgument='<%# Eval("ProductID") %>' /> 
     </ItemTemplate> 
    </asp:TemplateField> 
</asp:GridView> 

В # Код использования C следующий код:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "Add To Cart") 
    { 
     int ProductID = Convert.ToInt32(e.CommandArgument); 
     AddToCart(ProductID); 
    } 
} 
Смежные вопросы