1

Visual Basic でこのコードを使用していますが、テストすると機能します。すべての行に交互の色があります。

Private Sub GridView1_RowCreated(ByVal sender As Object, _
                                 ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _
                                 Handles GridView1.RowDataBound
    If e.Row.RowType = DataControlRowType.DataRow Then
        Dim RowNum as Integer
        RowNum = e.Row.RowIndex

        If RowNum mod 2 = 1 Then
            e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#DDDDDD'")
        Else
            e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#FFFFFF'")
        End If

        e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='DeepSkyBlue'")
        e.Row.Attributes("onclick") = Me.Page.ClientScript.GetPostBackClientHyperlink(Me.GridView1, "Select$" & e.Row.RowIndex)
    End If
End Sub

私はC#環境で作業しているので、C#に変換しました:

private void GridView1_RowCreated(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        int RowNum = e.Row.RowIndex;
        if (RowNum % 2 == 1)
        {
            e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#DDDDDD'");
        }
        else
        {
            e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#FFFFFF'");
        }

        e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='DeepSkyBlue'");
        e.Row.Attributes["onclick"] = this.Page.ClientScript.GetPostBackClientHyperlink(this.GridView1, "Select$" + e.Row.RowIndex);
    }
}

それは、Visual Basic の「Handles」オプションと同じ方法ですか? 可能であればコードを教えてください。

4

4 に答える 4

3

マークアップからイベントハンドラーを追加する必要があります

<asp:GridView OnRowCreated="GridView1_RowCreated" runat="server" ID="MyGrid">

</asp:GridView>

またはコードビハインドから

protected void Page_Load(object sender, EventArgs e)
{
   MyGrid.RowCreated += GridView1_RowCreated;
}
于 2012-10-04T20:37:01.273 に答える
2

あなたはで試すことができます

GridView1.RowCreated += GridView1_RowCreated;

Page_Init注: (ベスト プラクティス)でデリゲートを初期化することをお勧めします。

于 2012-10-04T20:35:07.580 に答える
2

次のように Page_Load() にハンドラーを追加する必要があります。

Protected Void Page_Load(Object Sender, EventArgs e){
    GridView1.RowCreated += GridView1_RowCreated;
}
于 2012-10-04T20:34:39.720 に答える
1

言語としての C# には、"handles" キーワードのような概念はありません。代わりに、イベント定義を明示的に関連付ける必要があります。

試す

protected void Page_Load(object sender, EventArgs e)
{
    GridView1.RowCreated += GridView1_RowCreated;
}

C# は、「+=」演算子でハンドラーを追加し、「-=」演算子でそれらを削除します。

VB.NET でも、AutoEventWireUp="true" を使用すると、「ハンドル」をスキップできます。

于 2012-10-04T20:38:16.607 に答える