有两个页面名为: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中的按钮字段进行此类工作。
答案 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);
}
}