繁体   English   中英

可以为GridView CommandField设置PostbackUrl吗?

[英]Can the PostbackUrl be set for a GridView CommandField?

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

当然,我可以轻松地在QueryString中发送NewSelectedIndex,但是我希望对用户隐藏该信息。 有什么建议吗?

勒皮是对的。 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属性中指定的页面。

在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到您的页面(此选项显示有关顺序回发的其他问题...)

感谢Sergiu Damian。

我使用MasterPages,并且UniqueID操作系统的隐藏字段可能有所不同。 我需要发布两个值。
在事件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会使用网格上第一个和第二个单元格的值来修改此隐藏字段的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM