不想用它的自动产生的select列,想实现上述问题,该如何做?
只能选择一行。
我现在做了一半,关键是当改变选择的时候,以前选择的那行图标变不过来
但是为了不误导大家,我就不说我的思路了,
请告诉我你们的方法,谢谢

解决方案 »

  1.   

    建一个checkbox列,用户点击是选中行,同时也让列中的checkbox选中
      

  2.   

    添加一个模板列,里面放一个img的,给这个img添加onclick的js事件,
    改变其图片
      

  3.   

    加CheckBox列,这样用基本控件就可以实现了,选中当前行时,把其它行用样式刷新一下.使当前行处于选中状态的外观形象。
      

  4.   

    <asp:TemplateField>
                        <ItemTemplate>
                        <img id="imglogo" src="state1.jpg" width="20px" height="20px" onclick="changeState(this);" />
                        </ItemTemplate>
                        </asp:TemplateField>function changeState(obj) {
            //alert(obj.getAttribute("src"));
            obj.setAttribute("src", "state2.jpg");
            //alert(obj.getAttribute("src"));
        }
      

  5.   


    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication3._Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>无标题页</title>    <script type="text/javascript">
           var CurrentSelected="";
           
            function SetWidth(Obj)
            {
                var Name=Obj.id.substr(Obj.id.length-4,4);
                var RowName=Obj.id.substr(0,Obj.id.length-4);
                var CurrentSelectedName="";
                var CurrentSelectedRowName="";
                
                if (CurrentSelected!="")
                {
                    CurrentSelectedName=CurrentSelected.substr(CurrentSelected.length-4,4);
                    CurrentSelectedRowName=CurrentSelected.substr(0,CurrentSelected.length-4);
         
                    if (CurrentSelectedName=="img2")
                    {
                        document.getElementById (CurrentSelected).width=0;
                        document.getElementById (CurrentSelectedRowName+"img1").width=100;
                    }
                }
                
                if (Name=="img1")
                    CurrentSelected=RowName +"img2";
                else
                    CurrentSelected=RowName +"img1";
                    
                document.getElementById (CurrentSelected).width=100;
                Obj.width=0;
            }
        </script></head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:GridView ID="Gridview1" runat="server" AutoGenerateColumns="False">
                <Columns>
                    <asp:TemplateField>
                        <ItemTemplate>
                            <img id="img1" alt="普通" src="http://avatar.profile.csdn.net/5/2/A/2_wartim.jpg" onclick="SetWidth(this)"
                                runat="server" width="100" />
                            <img id="img2" alt="选中" src="http://c.csdn.net/bbs/t/5/i/pic_logo.gif" onclick="SetWidth(this)"
                                runat="server" width="0" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        </div>
        </form>
    </body>
    </html>using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;namespace WebApplication3
    {
        public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                DataTable DT = new DataTable();
                DT.Columns.Add("c1");
                DT.Rows.Add(new Object[] { 1 });
                DT.Rows.Add(new Object[] { 2 });
                DT.Rows.Add(new Object[] { 3 });            Gridview1.DataSource = DT;
                Gridview1.DataBind();
            }
        }
    }