日期:2014-05-18  浏览次数:20838 次

checkbox结合gridview使用问题,请帮忙,谢谢!
问一下各位,我在gridview里面第一列加了一个模板列,并放置了一个id="check"的Checkbox,我想选中某行的checkbox后,这一行后改变该行的颜色,再点一下不选中时,该行颜色恢复。  
事件触发我放在check_CheckedChanged 中了。  
网上有说通过 js脚本直接写的,不用放在后台页中,可我找了,没找到我想实现的功能。请大家帮忙,(js脚本或者后台页都行)谢谢!  

我的部分代码如下所示:  
.aspx页面  
 
C# code
<asp:GridView ID="dgck" runat="server" AutoGenerateColumns="False"  Width ="2200px"  Font-Size="X-Small" DataKeyNames="客户号" AllowSorting="True"  >
                    <RowStyle HorizontalAlign="Center" Height="20px" />        
                    <Columns>
                        <asp:TemplateField HeaderText="选中一行">
                            <EditItemTemplate>
                                <asp:CheckBox ID="CheckBox1" runat="server" />
                            </EditItemTemplate>
                            <ItemTemplate>
                                <asp:CheckBox ID="check" runat="server" OnCheckedChanged="check_CheckedChanged" />
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                    <HeaderStyle HorizontalAlign="Center" Font-Size="X-Small" ForeColor="Black" />
                    <AlternatingRowStyle Font-Size="X-Small" />
                </asp:GridView> 


C# code

public void dgck_bind()//绑定gridview数据.
{..............}

 protected void check_CheckedChanged(object sender, EventArgs e)//checkbox触发事件
    {  

        for (int i = 0; i < dgck.Rows.Count; i++)
        { 
        CheckBox cb = (CheckBox)dgck.Rows[i].FindControl("check");//找到id="dgck"的gridview的模板中id="check"的checkbox,并转换成CheckBox类型。
        DataControlFieldCell dc = (DataControlFieldCell)cb.Parent;//得到checkbox所在的单元格
        GridViewRow gr = (GridViewRow)dc.Parent;//得到checkbox所在的行
             if (gr.Checked == true)//如果点击checkbox打勾
            {
              //不知道怎么写了            
           }
            else //如果取消打勾或者没有打勾
             { //不知道怎么写了
             }
        }
    }


------解决方案--------------------
参考:
http://dotnet.aspx.cc/article/ff130c7f-3650-4da6-8943-8aa4af3e3459/read.aspx

基本上,一般的.net问题,孟老大的页面上都能找到一二
http://dotnet.aspx.cc/
------解决方案--------------------
http://www.cnblogs.com/ajaxworld/archive/2007/07/08/810571.aspx
这里讲的很详细,你可以看看
------解决方案--------------------
自己寫的,你可以看看
<asp:CheckBox ID="check" runat="server" AutoPostBack="true" OnCheckedChanged="check_CheckedChanged" />

C# code
  protected void GridViewShow_RowDataBound(object sender, GridViewRowEventArgs e)
    {        
        CheckBox cbx = (CheckBox)e.Row.FindControl("CheckBox1");
        if (cbx != null)
        {
            if(ViewState["rowIndex"] == null)
            {
                ViewState["rowIndex"] = 0 ;
            }
          
           cbx.CssClass = Convert.ToString(ViewState["rowIndex"]);

            ViewState["rowIndex"] = Convert.ToInt32(ViewState["rowIndex"]) + 1;
        }
    }
 protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
    {
        GridBackColor = this.GridViewShow.BackColor;//取