我在我的页面上有一个GridView控件,我已经为它定义了许多BoundFields。数据绑定GridView的每一行都有一个CommandField (选择),我想将它的PostBack发送到新页面。
当然,我可以很容易地在QueryString中发送NewSelectedIndex,但我宁愿对用户隐藏该信息。有什么建议吗?
发布于 2008-12-02 14:19:00
莱皮是对的。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。我使用为按钮动态添加的标记属性来传递Id,然后使用Javascript代码将值放入隐藏字段,然后按钮简单地回发到PostbackUrl属性中指定的页面。
发布于 2008-12-02 13:06:52
在GridView中使用HyperLinkField列:
<asp:HyperLinkField AccessibleHeaderText="Edit" DataNavigateUrlFields="ActivityId" DataNavigateUrlFormatString="AcitivtyEdit.aspx?id={0}" Text="Edit Activity" />当然,正如您所说,此选项显示url中的id。要隐藏它(尽管任何人都可以查看您的javascript并查看您做了什么),您有两个选择: 1.使用Javascript代码来设置一个带有id的隐藏字段,更改表单回发(action)地址,然后提交表单。您必须允许您的asp.net站点允许从不同的页面回发2.允许命令回发到承载GridView的同一页,并在服务器端事件处理程序中回发到您的页面的Server.Transfer (此选项在顺序回发时会出现其他问题...)
发布于 2009-05-21 17:30:10
谢谢塞尔吉奥·达米安。
我使用的是MasterPages,而UniqueID的os隐藏字段可能会有所不同。我需要发布两个值。
在event 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我有两个隐藏字段(HDLB和HDPT)。event OnClientClick使用网格上的第一个和第二个单元格的值修改此隐藏字段的值。
https://stackoverflow.com/questions/333484
复制相似问题