asp:TemplateField HeaderText="用户操作">
<ItemTemplate>
<asp:Button ID="EditBtn" runat="server" Text="编辑" CommandName="Modify" CommandArgument='<%# Eval("UserID") %>' />
</ItemTemplate>
</asp:TemplateField>protected void UserView_RowCommand(object sender, GridViewCommandEventArgs e)
{
string commandName = e.CommandName;
switch (commandName)
{
case "Modify":
Response.Redirect("EditUser.aspx?userID="+ Convert.ToInt32(e.CommandArgument));//就是这里链接不过去,获取不到值
break;
case "Delete":
break; }
}
<ItemTemplate>
<asp:Button ID="EditBtn" runat="server" Text="编辑" CommandName="Modify" CommandArgument='<%# Eval("UserID") %>' />
</ItemTemplate>
</asp:TemplateField>protected void UserView_RowCommand(object sender, GridViewCommandEventArgs e)
{
string commandName = e.CommandName;
switch (commandName)
{
case "Modify":
Response.Redirect("EditUser.aspx?userID="+ Convert.ToInt32(e.CommandArgument));//就是这里链接不过去,获取不到值
break;
case "Delete":
break; }
}
Response.Redirect(string.Format("EditUser.aspx?userID={0}",e.CommandArgument));//就是这里链接不过去,获取不到值
break;
{
int index = ((e.CommandSource as Button).NamingContainer as GridViewRow).RowIndex;
string userID = GridView1.Rows[index].Cells[0].Text;
//下面你的操作
}
楼主到底用的2003还是2005 太诡异了
http://topic.csdn.net/u/20081003/16/59b7d898-dd2a-4dce-b961-d77ac432ba7b.html
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("UserID") %>' style="display:none" />
<asp:Button ID="EditBtn" runat="server" Text="编辑" OnClick="EditBtn_Click“>
</ItemTemplate>
</asp:TemplateField>而后就可以在后台 protected void EditBtn_Click(object sender, EventArgs e)
{
Button bt = sender as Button;
Label lb = bt.FindControl("Label1") as Label;
Response.Redirect("EditUser.aspx?userID="+lb.Text);
}用不着那种上溯到GridView去的劳什子做法。
另外,把GridView和DetailsView放在一个页面上(例如左右摆放),每当GridView上选择一行时可以及时到DetailsView中编辑(其它时候DetailsView的Visible为False),这样的页面更实用一些。