使用ASP.net中的按钮字段获取Gridview中所选行的数据字段

时间:2014-07-07 10:36:36

标签: asp.net gridview

有两个页面名为:People.aspx和Profile.aspx。

People.aspx - >包含所有用户的名称

Profile.aspx - >包含每个用户的信息

在第一页People.aspx中,我有一个名为 peopleGridview 的Gridview,当我在Page_Load中加载页面名称 People.aspx 时event我调用一个在数据库上执行sql查询的方法,并获取我需要在Gridview中放入的所有字段。

SQL查询是这样的:

public DataSet PeopleList()
    {
        GetConnection();
        SqlCommand command = new SqlCommand("SELECT Members.ID, Members.Full_Name, Members.Position, Members.Status, Profile.Address" +
                                            " FROM Members" +
                                            " INNER JOIN Profile" +
                                            " ON Members.ID = Profile.ID"+
                                            " ORDER BY Members.Priority, Members.Membership_Date, Members.Full_Name", con);
        SqlDataAdapter da = new SqlDataAdapter(command);//da: DataAdapter 
        DataSet ds = new DataSet();//ds: Dataset
        da.Fill(ds);
        con.Close();
        return ds;
    }

在Gridview中我只需要显示字段 Full_Name 位置状态地址,我这样做不希望显示字段 ID 的值(因为普通用户无需知道其他用户的ID)。

我的Gridview中每行都有一个按钮字段,我希望每当我点击所选行的按钮字段时,请阅读所选行的字段 ID (当前不是在Gridview中显示)并将其作为用户ID 的参数放在Response.Redirect("Profile.aspx?UserID=" + userid.Text.ToString());中,以便将其发送到 Profile.aspx ,这是另一个包含有关该用户的信息。

我该怎么做这样的工作?另外,如何在Profile.aspx

一侧获取UserID的值

我在Gridview中使用Link字段完成了工作,但是我无法使用GridView中的按钮字段进行此类工作。

1 个答案:

答案 0 :(得分:3)

要在网格视图中获取特定列,请先将false值设置为自动生成列AutoGenerateColumns="False",然后将其绑定到Gridview列中的所需字段。

html GridView:

<asp:GridView ID="GridView1" CssClass="gridview" runat="server" AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand" >
    <Columns>
        <asp:BoundField DataField="Full_Name"  HeaderText="Full Name" SortExpression="Full Name" />
        <asp:BoundField DataField="Position" HeaderText="Postion" SortExpression="Position" />
        <asp:BoundField DataField="Address"  HeaderText="Address" SortExpression="Address" />
        <asp:TemplateField HeaderText="View Profile">
            <ItemTemplate>
                <div style="text-align: center;">
                    <asp:ImageButton ID="ImgBtnViewInq" runat="server" ImageUrl="~/images/Viewmail.png" 
                        CommandName="ViewProfile" CommandArgument='<%# Eval("UserID") %>' ToolTip="View Profile" />
                </div>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

C#代码背后:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "ViewProfile")
    {
        // id with get the Userid parameter that we set inside the button CommandArgument='<%# Eval("UserID") %>'
        int id = Convert.ToInt32(e.CommandArgument);

        // Send this value of id to your querystring to redirect to another page
        Response.Redirect("Profile.aspx?UserId=" + id);
    }
}