【问题标题】:Can the PostbackUrl be set for a GridView CommandField?可以为 GridView CommandField 设置 PostbackUrl 吗?
【发布时间】:2008-12-02 09:45:26
【问题描述】:

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

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

【问题讨论】:

    标签: c# asp.net gridview postback


    【解决方案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 属性中指定的页面。

    【讨论】:

      【解决方案2】:

      在 GridView 中使用 HyperLinkField 列:

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

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

      【讨论】:

      • 如果您使用这些技巧,ASP.NET 将抛出异常。建议之前先尝试。
      【解决方案3】:

      感谢塞尔吉乌·达米安。

      我使用 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 事件将这个隐藏字段的值修改为网格上第一个和第二个单元格的值。

      【讨论】:

        猜你喜欢
        • 2010-12-11
        • 2011-10-23
        • 2012-05-29
        • 2010-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多