在Select上通过LinkBut​​ton进行GridView SelectedValue

时间:2013-08-11 04:55:47

标签: c# asp.net

我通常只在我的数据网格上使用默认的“选择”,但现在,当用户选择一行时,我需要弹出一个模态弹出窗口。所以,我正在尝试使用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>

我创建了OnClick事件,它会触发,我认为我可以获得该事件中行的selectedvalue。我通常使用GridView1_SelectedIndexChanged事件。

但我正在努力寻找获得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();
}

有人可以指导我如何获取GridView的选定值吗?

2 个答案:

答案 0 :(得分:2)

您的问题:Can anyone guide me on how to get the selected value of the GridView?

您还需要将ImageButton的CommandArgument属性设置为所需的Column值。说:ProjectId:[即ProjectId应该是您表格中的一列]

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

edit_Click事件中,您可以检索为:

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

答案 1 :(得分:0)

试试这个::

在aspx中绑定隐藏字段中的Id,然后在代码后面找到隐藏字段并获取值

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

中的代码

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