100分求助在DataGrid内单击行,及选择里面的checkbox相关问题。

chinabs 2003-11-05 04:37:49
在DataGrid第一列绑定了CheckBox控件,出现许多问题:
1,选择CheckBox时,其所在的行选择上,并让该行颜色变化;
2,单击DataGrid里面的一行,该行的颜色变华,并让前面的CheckBox也选择上;

其中一个问题我已经解决。第二个问题有不知道有什么办法?
...全文
39 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lishao 2003-11-05
  • 打赏
  • 举报
回复
学习,楼上的用js怎样实现?
mao5000 2003-11-05
  • 打赏
  • 举报
回复
我想问问,这种选择刷新页面的方法好吗?为什么不用javascrpt脚本呢?
张新林 2003-11-05
  • 打赏
  • 举报
回复
private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{

e.Item.Attributes.Add ("onClick","document.all.checkbox.checked=! document.all.checkbox.checked");
e.Item.Attributes.Add ("onmouseover","this.style.background='#ff9900';" );
e.Item.Attributes.Add ("onmouseout","this.style.background='#ffffff';");
}
}
替你搞定了
chinabs 2003-11-05
  • 打赏
  • 举报
回复
除了asam2183(三山)的方法没有测试以后,其它均会有一个问题,就是checkbox全选择上。
附:
<asp:datagrid id="DataGrid1" runat="server" Width="100%" AutoGenerateColumns="False" AllowPaging="True">
<HeaderStyle BackColor="MediumAquamarine"></HeaderStyle>
<Columns>
<asp:TemplateColumn>
<HeaderStyle HorizontalAlign="Center" Width="10%"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
<HeaderTemplate>
<input type="checkbox" id="checkSeleAll">
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkSele" Runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>

private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
LinkButton button=(LinkButton)e.Item.Cells[0].Controls[0];
e.Item.Attributes["onclick"]=Page.GetPostBackClientHyperlink(button,"");
CheckBox cb=(CheckBox)e.Item.FindControl("chkSele");///找到你的checkbox
cb.Checked=true;
}
}
acewang 2003-11-05
  • 打赏
  • 举报
回复
晕,粘一粘也可以,呵呵
KK4 2003-11-05
  • 打赏
  • 举报
回复
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.AlternatingItem||e.Item.ItemType==ListItemType.Item)
{
e.Item.Attributes["onmouseout"]="this.style.backgroundColor='#FFffcc'";
e.Item.Attributes["onmouseover"]="this.style.backgroundColor='lightgreen'";
LinkButton button=(LinkButton)e.Item.Cells[0].Controls[0];
e.Item.Attributes["onclick"]=Page.GetPostBackClientHyperlink(button,"");
CheckBox cb=(CheckBxo)e.Item.Cells///找到你的checkbox
cb.Checked=true;
}
}
acewang 2003-11-05
  • 打赏
  • 举报
回复
错了,
CheckBox cb=(CheckBxo)e.Item.Cells///找到你的checkbox
cb.Checked=true;
放到按钮里
relaxzone 2003-11-05
  • 打赏
  • 举报
回复
在datagrid的selectedindexchange事件中添加如下代码:
if datagrid1.selectedindex>-1 and datagrid1.selectedindex<datagrid1.items.count then
dim chk as CheckBox
chk=datagrid1.items(datagrid1.selectedindex).cells(1).controls(1)
chk.checked=true
endif
acewang 2003-11-05
  • 打赏
  • 举报
回复
兄弟你怎么惨到信誉值被扣的只剩36?
张新林 2003-11-05
  • 打赏
  • 举报
回复
CheckBox.clientID.Checked=true
acewang 2003-11-05
  • 打赏
  • 举报
回复
不会死循环,编程设置checkbox选中不会激发checkbox事件
完整代码:
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.AlternatingItem||e.Item.ItemType==ListItemType.Item)
{
e.Item.Attributes["onmouseout"]="this.style.backgroundColor='#FFffcc'";
e.Item.Attributes["onmouseover"]="this.style.backgroundColor='lightgreen'";
LinkButton button=(LinkButton)e.Item.Cells[0].Controls[0];
e.Item.Attributes["onclick"]=Page.GetPostBackClientHyperlink(button,"");
CheckBox cb=(CheckBxo)e.Item.Cells///找到你的checkbox
cb.Checked=true;
}
}
张新林 2003-11-05
  • 打赏
  • 举报
回复
<tr id="test" onclick="test.bgcolor =#cc9900">
acewang 2003-11-05
  • 打赏
  • 举报
回复
在第一列放置一个选择按钮,设置隐藏,然后
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.AlternatingItem||e.Item.ItemType==ListItemType.Item)
{
LinkButton button=(LinkButton)e.Item.Cells[0].Controls[0];
e.Item.Attributes["onclick"]=Page.GetPostBackClientHyperlink(button,"");
CheckBox cb=(CheckBxo)e.Item.Cells///找到你的checkbox
cb.Checked=true;
}
}
asam2183 2003-11-05
  • 打赏
  • 举报
回复
2 中的要求有"死"循环的嫌疑:
CheckBox属于DataGrid,当你点中某一行中的任何一列时
当前行选中,“CheckBox也选择上”
这样将导致当点击ChechBox 那一列时,CheckBox永远是“选中”的状态

偶有一方法能够达到你的基本要求
(除了点击CheckBox时,当前行没有选择,只选中CheckBox)


1.添加DataGrid1的事件:DataGrid1_ItemDataBound,然后再里面添加代码:
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
for (int i=1;i<e.Item.Cells.Count;i++)
{
e.Item.Cells[i].Attributes.Add("onclick", " Submit( " + e.Item.ItemIndex + " );");
}
}
2.在.aspx文件(界面)添加一个隐藏的HTML控件
<INPUT id="SelItems" type="hidden" name="SelItem">
3.在.aspx文件(界面)添加代码,其中form1为你的该页面的ID:
<script language="javascript">
function Submit(sID)
{
form1.SelItems.value=sID;
form1.submit();
}
</script>
4.在page_load里,添加代码:
if (Request["SelItem"]!=null&&Request["SelItem"]!="")
{
DataGrid1.SelectedIndex=Convert.ToInt32(Request["SelItem"].ToString());
}
Kanderliu 2003-11-05
  • 打赏
  • 举报
回复
试试看用SelectChanged事件.

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧