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 中的“句柄”选项相同的方法吗?如果可能的话,请给我代码。

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

您必须像这样在 Page_Load() 中添加处理程序:

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

你可以试试

GridView1.RowCreated += GridView1_RowCreated;

注意:我建议您在Page_Init(最佳实践)中初始化您的委托

于 2012-10-04T20:35:07.580 回答
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 回答