2

ASP.net/VB.NETでWebアプリケーションを作成していますが、GridViewコントロールに問題があります。現在、GridViewにDBからのデータを入力し、ユーザーがポップアップするフォームを介して必要な情報を編集できるように更新ボタンもコーディングしました。

更新ボタン付きのGridView

可能であれば、右側の2つの列にボタンを追加します(すでに1つをDock Out Time列に配置しています)。このボタンは、列が設定されている場合は非表示になり、現在の時刻が列に設定されます。 。これらの2つの列の時間の設定は、更新フォームですでに処理されていますが、上司から、これが可能かどうかを確認するように依頼されました。

これらの2つの時間列はTemplateFieldsであり(実際にDBにあるものから表示時間をフォーマットするため)、画像のその設定ボタンのItemTemplateにaspボタンを追加しました。

これは可能ですか?もしそうなら、コードビハインドでこのボタンにアクセスして機能を追加するにはどうすればよいですか(時間を設定し、列がnullでない場合は非表示にします)このような2つのアイテムを実際に使用できない場合TemplateFieldでは、これらのボタン用に2つの追加の列を作成できますが、これははるかにきれいに見えると思います。

任意の入力をいただければ幸いです。お時間をいただきありがとうございます。

4

1 に答える 1

4

はい、これは可能です。この回答を確認してください:

https://stackoverflow.com/a/11077709/1268570

基本的にRowCommand、グリッドからイベントを処理し、各ボタンをコマンドで識別する必要があります。オプションで、バインド時に各ボタンに引数を追加できます。次に例を示します。

<asp:GridView runat="server" OnRowCommand="grdProducts_RowCommand" 
    ID="grdProducts">
    <Columns>
        <asp:TemplateField ShowHeader="False">
            <ItemTemplate>
                <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="false" 
                    CommandName="myLink" CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>' Text="Button"></asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:CommandField ShowEditButton="True" />
    </Columns>
</asp:GridView>

コードビハインド:

    protected void grdProducts_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        switch (e.CommandName)
        {
            case "myLink":
                this.lblMessage.Text = e.CommandName + " " + e.CommandArgument + " " + DateTime.Now.ToString();

                // referenece to the current row
                var row = this.grdProducts.Rows[int.Parse(e.CommandArgument.ToString())];
                break;
            default:
                break;
        }
    }

イベントでグリッドを更新した後RowCommand、グリッド データを再設定して変更をレンダリングする必要があります。

于 2012-06-19T22:00:01.300 に答える