0

我的页面上有一个 GridView 控件,我为其定义了许多 BoundFields。数据绑定的 GridView 的每一行都有一个 CommandField (Select),我想为此将 PostBack 发送到新页面。

当然,我可以轻松地在 QueryString 中发送 NewSelectedIndex,但我宁愿对用户隐藏该信息。建议?

4

3 回答 3

1

莱皮是对的。GridView 没有 PostbackUrl 属性。但是,您可以使用具有 PostbackUrl 属性的标准控件来做您想做的事情。

<asp:TemplateField AccessibleHeaderText="Edit">
    <ItemTemplate>
        <asp:Button runat="server" ID="btnEdit" PostBackUrl="~/Default.aspx" OnClientClick='form1.ActivityId.value = this.Tag;' Tag='<%# Eval("ActivityId") %>' Text="Edit"/>
    </ItemTemplate>
</asp:TemplateField>

在此示例代码中,我向 GridView 添加了一个 TemplateColumn。我为按钮使用动态添加的 Tag 属性来传递 Id,然后我使用 Javascript 代码将值放在隐藏字段中,然后按钮简单地回发到 PostbackUrl 属性中指定的页面。

于 2008-12-02T14:18:59.600 回答
0

在 GridView 中使用 HyperLinkField 列:

<asp:HyperLinkField AccessibleHeaderText="Edit" DataNavigateUrlFields="ActivityId" DataNavigateUrlFormatString="AcitivtyEdit.aspx?id={0}" Text="Edit Activity" />

当然,正如您所说,此选项在 url 中显示 id。要隐藏它(尽管任何人都可以查看您的 javascript 并查看您的操作),您有两种选择: 1. 使用 Javascript 代码设置一个带有 id 的隐藏字段,更改表单回发(操作)地址,然后提交表单。您必须允许您的 asp.net 站点允许从不同页面回发 2. 允许命令回发到托管 GridView 的同一页面,并在服务器端事件处理程序中回发到 Server.Transfer 到您的页面(此选项提供关于顺序回发的其他问题...)

于 2008-12-02T13:06:51.650 回答
0

谢谢塞尔吉乌·达米安。

我使用 MasterPages,UniqueID os 隐藏字段可能会有所不同。我需要发布两个值。
在事件 Gridview_RowDataBound 我把这个代码:

If e.Row.RowType = DataControlRowType.DataRow Then
   e.Row.Cells(12).Text = ""
   Dim img As New WebControls.ImageButton
   img.PostBackUrl = "NecesidadesPostBack.aspx"
   img.ImageUrl = "imagenes/edit.png"
   img.OnClientClick = HDLB.UniqueID.ToString & ".value = '" & e.Row.Cells(0).Text & "'; " & HDPT.UniqueID.ToString & ".value = '" & e.Row.Cells(1).Text & "';"
   img.AlternateText = "Edit"
   e.Row.Cells(12).Controls.Add(img)
End If

我有 2 个隐藏字段(HDLB 和 HDPT)。OnClientClick 事件将这个隐藏字段的值修改为网格上第一个和第二个单元格的值。

于 2009-05-21T17:30:10.130 回答