2

ページに DataTable からの情報を表示していて、単純な列の並べ替えを少し超える並べ替え機能を追加したいと考えています。そのため、ページをリロードする前にセッション情報を変更する関数にポストバックする GridView の HeaderItems に LinkBut​​tons を配置しようとしています。

リンクをクリックするとポストバックが発生しますが、 OnClick関数が実行されないため、 OnClickイベントは生成されないようです。trueに設定しました。リンクを GridView の外に移動すると、リンクは正常に機能します。AutoEventWireup

通常のアンカーを作成し、hrefsにクエリを追加し、ページの読み込み時にそれらをチェックすることで問題を回避しましたが、C# が単調な作業を行うことを好みます。何か案は?

更新:コントロールの ID がOnClick関数名と一致することを明確にします。

4

3 に答える 3

2

あなたは正しい方向に進んでいますが、LinkBut​​tonのコマンド名/引数を使って作業してみてください。次のようなものを試してください。

TemplateFieldのHeaderTemplateに、LinkBut​​tonを追加し、CommandNameとCommandArgumentを設定します

<HeaderTemplate> 
    <asp:LinkButton ID="LinkButton1" runat="server" CommandName="sort" CommandArgument="Products" Text="<%# Bind('ProductName")' />
</HeaderTemplate>

次に、GridViewのRowCommandイベントを設定します

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "sort")
    {
        //Now sort by e.CommandArgument

    }
}

このように、あなたはあなたのリンクボタンの多くのコントロールを持っていて、あなたはそれらを追跡するために多くの仕事をする必要はありません。

于 2008-09-05T10:32:34.463 に答える
0

リンクがクリックされたときに呼び出すメソッドを指定できます。

<HeaderTemplate>
    <asp:LinkButton
        ID="lnkHdr1"
        Text="Hdr1"
        OnCommand="lnkHdr1_OnCommand"
        CommandArgument="Hdr1"
        runat="server"></asp:LinkButton>
</HeaderTemplate>

コードビハインド:

protected void lnkHdr1_OnCommand(object sender, CommandEventArgs e)
{
    // e.CommandArgument
}
于 2008-09-05T11:51:40.747 に答える
0

ASP.Net で動的に生成されたコントロールでイベントを使用する場合は、次の 2 つの点に注意してください。

  • まず、コントロールは Page.Init イベント ハンドラーで作成するのが理想的です。これは、イベント処理コードが実行される前に、コントロールが既に作成されていることを確認するためです。
  • 次に、同じ値をコントロール ID プロパティに割り当てる必要があります。これにより、イベント ハンドラー コードは、それがイベントを処理する必要があるコントロールであることがわかります。
于 2008-09-05T09:44:34.033 に答える