0

我已经坚持了几个小时,第一次发帖。我不知道如何获取值并将所选行回发到新页面。我将自己在新页面中显示信息(如果您愿意,可以查看详细视图)

<asp:GridView ID="GameSearchGrid" runat="server"
AllowPaging = "True" AllowSorting = "True" 
    DataSourceID="EntityDataSource1" Width="502px" AutoGenerateColumns="False" >
    <Columns>
        <asp:CommandField ShowSelectButton="True" />
        <asp:BoundField DataField="SKU" HeaderText="SKU" ReadOnly="True" 
            SortExpression="SKU" Visible="false" />
        <asp:BoundField DataField="Name" HeaderText="Name" ReadOnly="True" 
            SortExpression="Name" />
        <asp:BoundField DataField="GSystem" HeaderText="GSystem" ReadOnly="True" 
            SortExpression="GSystem" />
        <asp:BoundField DataField="Rating" HeaderText="Rating" ReadOnly="True" 
            SortExpression="Rating" />
        <asp:ButtonField ButtonType="Button" HeaderText = "select" Text="Select" 
        />
    </Columns>
</asp:GridView>

<asp:EntityDataSource ID="EntityDataSource1" runat="server" 
    ConnectionString="name=GameExpressEntities" 
    DefaultContainerName="GameExpressEntities" EnableFlattening="False" 
    EntitySetName="Games" 
    Select="it.[SKU], it.[Name], it.[GSystem], it.[Rating]" OrderBy="it.[Name]">
</asp:EntityDataSource>
//------------------------------------------------

void GameSearchGrid_SelectedIndexChanged(object sender, EventArgs e)
{
    GridViewRow row = GameSearchGrid.SelectedRow;
    Response.Redirect("~/GameDetailView.aspx");
}
4

2 回答 2

1

Cells您可以使用行上的属性访问绑定字段。Cells 属性只能通过数字索引访问单元格,因此您需要知道要访问的列的索引。例如:

string skuCellValue = row.Cells[0].Text;

如果您不想对索引进行硬编码,可以从 GridView 的 Columns 属性中查找它,例如,匹配 HeaderText:

GridViewRow row = GameSearchGrid.SelectedRow;
GridView gv = (GridView)row.Parent.Parent;

int colIndex = -1;
for (int i = 0; i < gv.Columns.Count; i++)
{
    if (gv.Columns[i].HeaderText == "SKU")
    {
        colIndex = i;
        break;
    }
}

// handle case when correct column was not found

string skuCellValue = row.Cells[colIndex].Text;

之后,您可以继续并重定向到新页面。您可能希望在查询字符串中提供找到的 SKU 值:

Response.Redirect("~/GameDetailView.aspx?SKU=" + skuCellValue);

请注意,重定向会导致浏览器发出新请求(GET 请求),因此您要重定向到的页面将无法访问之前页面中的发布数据或任何其他数据(除了显式传递的查询字符串)。

于 2012-06-15T10:21:58.580 回答
0

使用ButtonField CommandName来识别您在单击(选择)时所做的事情。然后在您的 Gridview RowCommand 事件中,捕获按钮的名称并执行您需要的操作。

我提供的链接中有示例代码。

于 2012-06-15T09:46:39.393 回答