6.鼠标移到GridView某一行时改变该行的背景色方法一:

效果图:

做法:
双击GridView的OnRowDataBound事件;
在后台的GridView1_RowDataBound()方法添加代码,最后代码如下所示:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        int i;
        //执行循环,保证每条数据都可以更新
        for (i = 0; i < GridView1.Rows.Count; i++)
        {
            //首先判断是否是数据行
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                //当鼠标停留时更改背景色
                e.Row.Attributes.Add("onmouseover", "c=this.style.backgroundColor;this.style.backgroundColor='#00A9FF'");
                //当鼠标移开时还原背景色
                e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=c");
            }
        }

    }

前台代码:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>实现鼠标划过改变GridView的行背景色 清清月儿http://blog.csdn.net/21aspnet </title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="身份证号码"
            DataSourceID="SqlDataSource1" AllowSorting="True" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3" Font-Size="12px" OnRowDataBound="GridView1_RowDataBound">
            <Columns>
                <asp:BoundField DataField="身份证号码" HeaderText="身份证号码" ReadOnly="True" SortExpression="身份证号码" />
                <asp:BoundField DataField="姓名" HeaderText="姓名" SortExpression="姓名" />
                <asp:BoundField DataField="家庭住址" HeaderText="家庭住址" SortExpression="家庭住址" />
                <asp:BoundField DataField="邮政编码" HeaderText="邮政编码" SortExpression="邮政编码" />
            </Columns>
            <FooterStyle BackColor="White" ForeColor="#000066" />
            <RowStyle ForeColor="#000066" />
            <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
            <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:北风贸易ConnectionString1 %>"
            SelectCommand="SELECT top 5 [身份证号码], [姓名], [员工性别], [家庭住址], [邮政编码] FROM [飞狐工作室]" DataSourceMode="DataReader"></asp:SqlDataSource>
   
    </div>
    </form>
</body>
</html>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在GridView中,要实现某一行换颜色的效果,可以通过自定义Adapter来实现。具体步骤如下: 1. 首先,创建一个继承自BaseAdapter的自定义Adapter,并重写getView方法。 2. 在getView方法中,通过position参数获取到每一行的位置,然后判断该行是否需要换颜色。 3. 如果需要换颜色,可以设置一个标志位来记录当前行是否为需要换颜色的行。 4. 在getView方法中,通过判断标志位来为需要换颜色的行设置不同的背景颜色。 以下是一个简单的示例代码: ```java public class CustomAdapter extends BaseAdapter { private Context mContext; private List<String> mItemList; private boolean mShouldChangeColor; public CustomAdapter(Context context, List<String> itemList) { mContext = context; mItemList = itemList; } @Override public int getCount() { return mItemList.size(); } @Override public Object getItem(int position) { return mItemList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view; if (convertView == null) { view = LayoutInflater.from(mContext).inflate(R.layout.item_gridview, parent, false); } else { view = convertView; } TextView textView = view.findViewById(R.id.text_view); textView.setText(mItemList.get(position)); if (position == 2) { // 假设第3行需要换颜色 mShouldChangeColor = true; } else { mShouldChangeColor = false; } if (mShouldChangeColor) { view.setBackgroundColor(Color.RED); // 设置背景颜色 } else { view.setBackgroundColor(Color.WHITE); } return view; } } ``` 这样,在GridView的每一行中,如果需要换颜色的行,背景颜色将会被设置为红色;否则,背景颜色将会是白色。 ### 回答2: 要使GridView中的某一行换颜色,可以通过编写自定义的适配器(Adapter)实现。 首先,创建一个继承自BaseAdapter的适配器类。在该类中,我们需要重写getView()方法,用于自定义每个Grid Item的显示内容。 在getView()方法中,我们可以根据需要设置每个Grid Item的背景颜色。为了实现某一行换颜色的效果,我们可以在getView()方法中判断当前Grid Item所在的行号,若为目标行,则设置其背景颜色为所需的颜色,否则设置默认的背景颜色。 以下是一个简单示例的适配器代码: ``` public class MyAdapter extends BaseAdapter { private Context mContext; private List<String> mData; private int mTargetRow; // 目标行号 public MyAdapter(Context context, List<String> data, int targetRow) { mContext = context; mData = data; mTargetRow = targetRow; } @Override public int getCount() { return mData.size(); } @Override public Object getItem(int position) { return mData.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view; if (convertView == null) { view = LayoutInflater.from(mContext).inflate(R.layout.grid_item, parent, false); } else { view = convertView; } TextView textView = view.findViewById(R.id.text_view); textView.setText(mData.get(position)); // 判断当前Grid Item所在的行号是否为目标行 if (position / numColumns == mTargetRow) { view.setBackgroundColor(mContext.getResources().getColor(R.color.target_color)); } else { view.setBackgroundColor(mContext.getResources().getColor(R.color.default_color)); } return view; } } ``` 在上述代码中,我们通过设置mTargetRow变量来指定目标行号,在getView()方法中通过计算当前Grid Item所在的行号来判断是否为目标行,并设置不同的背景颜色。在实例化适配器,我们需要传入相应的参数,包括目标行号和数据源。 注意,colors.xml文件中应该定义target_color和default_color两个颜色供适配器使用。 最后,将适配器设置给GridView: ``` GridView gridView = findViewById(R.id.grid_view); gridView.setAdapter(new MyAdapter(this, data, targetRow)); ``` 这样就实现了在GridView中某一行换颜色的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值