ASP - получить значение GridRow / метод OnClick - PullRequest
2 голосов
/ 09 марта 2012

Я работаю над проектом C # / ASP 4.0, в котором я пытаюсь создать приложение для корзины покупок.

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

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

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

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

Ответы [ 4 ]

1 голос
/ 09 марта 2012

Вы можете использовать поля шаблона следующим образом:

<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);
    }
}

Надеюсь, это поможет!Удачи!

1 голос
/ 09 марта 2012

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

Сначала добавьте поле шаблона в представление сетки:

<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>

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

protected void bthAddToCart_Click(object sender, EventArgs e)
{

   Button button = (Button)sender;
   int productID = Convert.ToInt32(button.CommandArgument);
   AddToCart(productID);
}
0 голосов
/ 09 марта 2012

Вы должны использовать событие OnRowCommand для 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);
    }
}
0 голосов
/ 09 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...