try<%@ Page Language="C#" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.SqlClient" %>
<script runat="server">
void Page_Load(object o, EventArgs e)
{
if (!IsPostBack)
{
SqlDataAdapter da = new SqlDataAdapter("select * from authors",
"server=localhost;database=pubs;uid=sa;pwd=;");
DataTable dt = new DataTable();
da.Fill(dt);
DataGrid1.DataSource = dt.DefaultView;
DataGrid1.DataBind();
}
}</script>
<html>
<head>
</head>
<body>
<form id="form1" runat="server">
<asp:DataGrid id="DataGrid1" runat="server">
<Columns>
<asp:TemplateColumn HeaderText="CheckBox">
<ItemTemplate>
<asp:CheckBox id="Remove" runat="server" onclick="ChangeColor()" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="CheckBox">
<ItemTemplate>
<asp:Label id="DelID" runat="server" text='<%# DataBinder.Eval(Container.DataItem,"au_id")%>' />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</form>
<script language="javascript">
function GetRow(e)
{
while (e != null && e.tagName != "TR")
e = e.parentElement; return e;
}function ChangeColor()
{
var chk = event.srcElement;
var e = GetRow(chk);
if (e != null && e.tagName == "TR")
{
e.style.backgroundColor = chk.checked? "red": "";
//for(var i=0; i< e.all.length; i++)
//e.all[i].style.backgroundColor = chk.checked? "red": "";
}
}</script>
</body>
</html>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.SqlClient" %>
<script runat="server">
void Page_Load(object o, EventArgs e)
{
if (!IsPostBack)
{
SqlDataAdapter da = new SqlDataAdapter("select * from authors",
"server=localhost;database=pubs;uid=sa;pwd=;");
DataTable dt = new DataTable();
da.Fill(dt);
DataGrid1.DataSource = dt.DefaultView;
DataGrid1.DataBind();
}
}</script>
<html>
<head>
</head>
<body>
<form id="form1" runat="server">
<asp:DataGrid id="DataGrid1" runat="server">
<Columns>
<asp:TemplateColumn HeaderText="CheckBox">
<ItemTemplate>
<asp:CheckBox id="Remove" runat="server" onclick="ChangeColor()" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="CheckBox">
<ItemTemplate>
<asp:Label id="DelID" runat="server" text='<%# DataBinder.Eval(Container.DataItem,"au_id")%>' />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</form>
<script language="javascript">
function GetRow(e)
{
while (e != null && e.tagName != "TR")
e = e.parentElement; return e;
}function ChangeColor()
{
var chk = event.srcElement;
var e = GetRow(chk);
if (e != null && e.tagName == "TR")
{
e.style.backgroundColor = chk.checked? "red": "";
//for(var i=0; i< e.all.length; i++)
//e.all[i].style.backgroundColor = chk.checked? "red": "";
}
}</script>
</body>
</html>
由于asp.net服务器端控件无法在设计时的html代码里添加客户端事件,因此你必须在服务器端生成并注册客户端的控制脚本思归的方法:<asp:CheckBox id="Remove" runat="server" onclick="ChangeColor()" />
是无效的必须在服务器端代码里,使用
Checkbox1.Attributes.Add("OnClick", "JavaScript:ChangeColor()");
才行
<Input type="Checkbox" onclick="this.bgcolor=\"#000000\"">
原来还不了解个种道理
看了msdn才明白的
<asp:xxx >都不能直接添加客户端事件脚本
html控件可以
WebControl.Attributes.Add(事件, 脚本);