想实现用鼠标点中datalist的某一行,这一行颜色改变,表示选中。并且得到这一行某一列的值,以便后面的操作用

解决方案 »

  1.   

    // ItemDataBound事件
    private void changeRowColor(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
    {
    //如果是数据项并且是交替项
    if(e.Item.ItemType == ListItemType.Item  || e.Item.ItemType == ListItemType.AlternatingItem)
    {
    //添加自定义属性,当鼠标移过来时设置该行的背景色为"6699ff",并保存原背景色
    e.Item.Attributes.Add("onmouseover","currentcolor=this.style.backgroundColor;this.style.backgroundColor='#6699ff'");
    //添加自定义属性,当鼠标移走时还原该行的背景色
    e.Item.Attributes.Add("onmouseout","this.style.backgroundColor=currentcolor"); } 
    }
      

  2.   

    在DataList的ItemTemplate里添加一个CommandName为 Select的按钮,设置SelectedItemStyle
    <SelectedItemStyle BackColor="#FFFF80"></SelectedItemStyle>然后点击该按钮时此行即选中,变色,后面的操作通过DataList1.SelectedItem 即可访问选中行
      

  3.   

    如果在上面的基础上你不希望无端地出现一个按钮,而是直接在行上点击即可,那么可以<asp:DataList id="DataList1" style="Z-INDEX: 104; LEFT: 344px; POSITION: absolute; TOP: 56px"
    runat="server">
    <SelectedItemStyle BackColor="#FFFF80"></SelectedItemStyle>
    <ItemTemplate>
    <asp:Button id="Button1" runat="server" Text="Button" CommandName="Select"></asp:Button>
    </ItemTemplate>
    </asp:DataList>**************************************************private void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
            {
                Button btn = e.Item.FindControl("Button1") as Button;
                e.Item.Attributes.Add("onclick",Page.GetPostBackClientEvent(btn));
                btn.Style.Add("display","none");
            }