Craig
Craig

Reputation: 18724

GridView SelectedValue via LinkButton on Select

I usualy just use the default 'Select' on my Data Grids, but now, I need to popup a Modal Popup when the user selects a row. So, I am trying to use an ImageButton:

                <Columns>
                    <asp:TemplateField HeaderText="Edit">
                        <ItemTemplate>
                            <asp:ImageButton ID="imgbtn" ImageUrl="../Images/edit.png" runat="server" Width="25" Height="25" OnClick="edit_Click" CommandName="Select" />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="Name" HeaderText="Project Name" />
                    <asp:BoundField DataField="ProjectCode" HeaderText="Code" />
                    <asp:TemplateField HeaderText="Access"></asp:TemplateField>

                </Columns>

I created the OnClick event, which fires, and I thought that I can maybe get the selectedvalue of the row in that event. I usually used GridView1_SelectedIndexChanged event.

But I am battling to find a way to get the SelectedValue.

protected void edit_Click(object sender, ImageClickEventArgs e)
{
    ImageButton btndetails = sender as ImageButton;
    GridViewRow gvrow = (GridViewRow)btndetails.NamingContainer;
    Session["SelectedUserProjectId"] = ???? // This is where I am trying to get the selected value - but can't find a way to do so.
    var pi = int.Parse(Session["SelectedUserProjectId"].ToString());
    var ui = int.Parse(Session["SelectedUserId"].ToString());
    // Do some calls to get data, populate fields, and then...

    this.pnlEdit_ModalPopupExtender.Show();
}

Can anyone guide me on how to get the selected value of the GridView?

Upvotes: 2

Views: 1638

Answers (2)

R.C
R.C

Reputation: 10565

Your Question: Can anyone guide me on how to get the selected value of the GridView?

You also need to set the CommandArgument property of ImageButton to the Column value you want. Say: ProjectId: [ i.e ProjectId should be a column in your table ]

<asp:ImageButton ID="imgbtn" ImageUrl="../Images/edit.png" runat="server" 
 Width="25" Height="25" OnClick="edit_Click" CommandName="Select" 
 CommandArgument='<%# Eval("ProjectId") %>' />

In your edit_Click event you can retrieve as:

protected void edit_Click(object sender, ImageClickEventArgs e)
    {
        ImageButton btndetails = sender as ImageButton;
        Session["SelectedUserProjectId"] = btndetails.CommandArgument;
       // Rest of implementation
    }

Upvotes: 2

sangram parmar
sangram parmar

Reputation: 8736

Try this::

in aspx bind you Id in hidden field and Than find that hidden field in code behind and get value

  <Columns>
                    <asp:TemplateField HeaderText="Edit">
                        <ItemTemplate>
                            <asp:ImageButton ID="imgbtn" ImageUrl="../Images/edit.png" runat="server" Width="25" Height="25" OnClick="edit_Click" CommandName="Select" />
<asp:Hiddenfield runat="server" ID="hId" value='<%# Eval("UserProjectId")%>' />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="Name" HeaderText="Project Name" />
                    <asp:BoundField DataField="ProjectCode" HeaderText="Code" />
                    <asp:TemplateField HeaderText="Access"></asp:TemplateField>

                </Columns>

in code behind

protected void edit_Click(object sender, ImageClickEventArgs e)
{
    ImageButton btndetails = sender as ImageButton;
    GridViewRow gvrow = (GridViewRow)btndetails.NamingContainer;
    Session["SelectedUserProjectId"] = ((HiddenField)gvrow.FindControl("hId")).Value // This is where I am trying to get the selected value - but can't find a way to do so.
    var pi = int.Parse(Session["SelectedUserProjectId"].ToString());
    var ui = int.Parse(Session["SelectedUserId"].ToString());
    // Do some calls to get data, populate fields, and then...

    this.pnlEdit_ModalPopupExtender.Show();
}

Upvotes: 0

Related Questions