我在ConsumerList页面中有一个gridView。单击“编辑”按钮(在每行中)时,它将导航到EditConsumer页面。在EditConsumer页面中,我需要使用 Page.PreviousPage 获取所选行的值。如何获得这些价值?
public void Consumer_RowCommand(Object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "CustomEdit")
{
int rowIndex = Convert.ToInt32(e.CommandArgument);
string consumerID = grdConsumers.Rows[rowIndex].Cells[1].Text;
string consumerName = grdConsumers.Rows[rowIndex].Cells[2].Text;
string consumerUrl = grdConsumers.Rows[rowIndex].Cells[3].Text;
string consumerStatus = grdConsumers.Rows[rowIndex].Cells[4].Text;
Response.Redirect("EditConsumer.aspx?RowIndex=" + rowIndex);
}
}
MARKUP
<asp:GridView ID="grdConsumers" runat="server" AutoGenerateColumns="False" CssClass="resultGridTable"
GridLines="None" EnableViewState="True" AllowSorting="True" OnSorting="Consumers_Sorting" OnRowCommand="Consumer_RowCommand">
<AlternatingRowStyle BackColor="#E5E5E5" />
<Columns>
<asp:TemplateField HeaderText="Action">
<ItemTemplate>
<asp:Button ID="btnView" runat="server" CssClass="actionButtonView"
Text="VIEW" Style="width: 40px" BackColor="Orange"
Font-Bold="True" ForeColor="White" />
<asp:Button ID="btnEdit" runat="server" CommandName="CustomEdit" CommandArgument="<%# ((GridViewRow)Container).RowIndex %>"
CssClass="actionButtonEdit"
Text="EDIT" Style="width: 35px" BackColor="Orange"
Font-Bold="True" ForeColor="White" />
<asp:Button ID="btnDelete" runat="server" CssClass="actionButtonDelete"
Text="DELETE" Style="width: 55px" BackColor="Orange"
Font-Bold="True" ForeColor="White" />
<asp:Button ID="btnPing" runat="server" CssClass="actionButtonPing"
Text="PING" Style="width: 35px" BackColor="Orange"
Font-Bold="True" ForeColor="White" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="Consumer ID" DataField="ConsumerID" SortExpression="ConsumerID"></asp:BoundField>
<asp:BoundField HeaderText="Consumer Name" DataField="ConsumerName" SortExpression="ConsumerName"></asp:BoundField>
<asp:BoundField HeaderText="Consumer URL" DataField="ConsumerURL" SortExpression="ConsumerURL"></asp:BoundField>
<asp:BoundField HeaderText="Status" DataField="Status" SortExpression="Status"></asp:BoundField>
</Columns>
</asp:GridView>
答案 0 :(得分:1)
答案 1 :(得分:1)
注意:PreviousPage
只有!= null
cross page posting,Response.Redirect无效。因此,您可以使用Server.Transfer
。
您可以提供一个公共属性SelectedConsumer
,它返回GridView
中精确选择的行的自定义对象。
public Consumer SelectedConsumer
{
get {
if (grdConsumers.SelectedRow == null)
return null;
var c = new Consumer();
c.consumerID = grdConsumers.SelectedRow.Cells[1].Text;
c.consumerName = grdConsumers.SelectedRow.Cells[2].Text;
c.consumerUrl = grdConsumers.SelectedRow.Cells[3].Text;
c.consumerStatus = grdConsumers.SelectedRow.Cells[4].Text;
return c;
}
}
现在您只需要将PreviousPage
属性转换为正确的页面类型:
var consumerList = (ConsumerList)Page.PreviousPage;
var selectedConsumer = consumerList.SelectedConsumer;