1

I have an AspxGridView and a button inside of a DataItem Template of one column. I use Button_Click event for this button and I need to get values of current row in this event when I click on this button. AspxGridView's events' have "e.Keys[]" or "e.KeyValue" etc properties but I couldn't find anything for the button EventArgs. How can I get the values of columns or KeyValue? Thanks in advance.

kubilay
  • 5,047
  • 7
  • 48
  • 66

2 Answers2

1

You can also use the Container.keyvalue approach like this:

<dxwgv:GridViewDataTextColumn VisibleIndex="3" Caption="Simple Hyperlink Column">
    <DataItemTemplate>
        <a id="clickElement" target="_blank" href="Default2.aspx?id=<%# Container.KeyValue%>"><%# "Show New Form, Key Field = " + Eval("CategoryID").ToString()%></a>
    </DataItemTemplate>
</dxwgv:GridViewDataTextColumn>

Sample online here: http://www.devexpress.com/Support/Center/e/E993.aspx

Mehul
  • 848
  • 4
  • 13
0

there are two way

  1. use CommandArgument

ASP.NET

<dx:GridViewDataTextColumn>
    <DataItemTemplate>
        <asp:Button ID="btn_1" runat="server" OnClick="btn_1_Click" CommandArgument='<%# Eval("Id") %>' />
    </DataItemTemplate>
</dx:GridViewDataTextColumn>

And in C#

protected void btn_1_Click(object sender, EventArgs e)
    {
            int Id = Convert.ToInt32((sender as Button).CommandArgument);
    }

This way when you use Filter not work fine

  1. Second Way Use GridViewDataItemTemplateContainer

ASP.NET

<dx:GridViewDataTextColumn>
    <DataItemTemplate>
        <asp:Button ID="btn_1" runat="server" OnClick="btn_1_Click"/>
    </DataItemTemplate>
</dx:GridViewDataTextColumn>

C#

 protected void btn_1_Click(object sender, EventArgs e)
 {
     int Device_Id = Convert.ToInt32(((sender as Button).Parent as   devExpress.Web.GridViewDataItemTemplateContainer).KeyValue);
 }

i think second way is better

Farshad
  • 1
  • 2