私のページには、いくつかの BoundFields を定義した GridView コントロールがあります。データバインドされた GridView の各行には、PostBack を新しいページに送信する CommandField (選択) があります。
もちろん、NewSelectedIndex を QueryString で簡単に送信することもできますが、その情報をユーザーから隠しておきたいと思います。提案?
レピー そうですね。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 プロパティで指定されたページにボタンが単純にポストバックされます。
ありがとうセルジュ・ダミアン。
私は MasterPages を使用していますが、UniqueID os 非表示フィールドは異なる場合があります。2 つの値を投稿する必要があります。
イベント 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 は、この非表示フィールドの値を、グリッドの最初と 2 番目のセルの値で変更します。
GridView で HyperLinkField 列を使用します。
<asp:HyperLinkField AccessibleHeaderText="Edit" DataNavigateUrlFields="ActivityId" DataNavigateUrlFormatString="AcitivtyEdit.aspx?id={0}" Text="Edit Activity" />
もちろん、あなたが言ったように、このオプションはURLにIDを表示します。それを非表示にするには (ただし、誰でも JavaScript をチェックアウトして何をするかを見ることができます)、次の 2 つのオプションがあります。asp.net サイトで別のページからのポストバックを許可する必要があります順次ポストバックに関するその他の問題...)