关于Datagrid模板列CheckBox问题

bqlhome 2004-11-21 10:45:18
Datagrid模板列:
<ItemTemplate>
<asp:CheckBox id=CheckBox1 Runat="server" Checked='<%# DataBinder.Eval(Container, "DataItem.moneyDefault") %>'>
</asp:CheckBox>
</ItemTemplate>

这是一个设置币种的模块:
这一列用来设置本位币: 用CheckBox1.
一个系统我只要一个本位币:
我如何在DataGrid1里的那一列只能选择一行(即不管怎么点击都中能有一行被打钩,如果全部
没有选中,请自动选择第一行.

其实说起来也简单,不就是想问一下大家,DataGrid1怎样触发CheckBox1的CheckedChange事件。
有了这个,其余的代码我就会写了,
弄了好久了,autopostback=true也设置了。就是不触发表格的ItemCommand事件.

不过我建议大家最好不要告诉我将autopostback设置成为true,最好能用客户端代码的方法解决。
点一下就刷新一下页面的话,在局域网中可能还感觉不是很差,但是放在internet中,那就觉行
怪怪的了.

在dbgrid1的onitemCreate中加入这个也还是不行:
if(itemType == ListItemType.EditItem)
{
((CheckBox)e.Item.Cells[0].Controls[0]).Attributes["CheckedChanged"]="JavaScript:alert('aaa');";
}

没办法处理好久了,都搞不定,各位见笑了.
...全文
201 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
minghui000 2004-11-22
  • 打赏
  • 举报
回复
up + 接分 + 留个位置学习 !
WZCNet 2004-11-21
  • 打赏
  • 举报
回复
.cs
DataGrid的DataBound事件里
private void dgDataList_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
//如果集合中存在值
if (!object.Equals(ViewState["selectID"],null))
{
ArrayList aryListID = (ArrayList)ViewState["selectID"];

//如果集合中存在值,选中此值
if (aryListID != null && aryListID.Contains(this.dgDataList.DataKeys[e.Item.ItemIndex]))
{
CheckBox chk = (CheckBox)e.Item.FindControl("chkSelect");
chk.Checked = true;

intCount += 1;
}
}
}

//如果全选中,就将页脚中的全选选中
if (intCount == this.dgDataList.Items.Count && e.Item.ItemType == ListItemType.Footer)
{
CheckBox chk = (CheckBox)e.Item.FindControl("chkSelAll");
chk.Checked = true;
}

this.hidItemCount.Value = this.dgDataList.Items.Count.ToString();
}
WZCNet 2004-11-21
  • 打赏
  • 举报
回复
不要用服务器端,要用JS来实现,给你段代码.
JS:
/***************************DataGrid中的CheckBox全选项,和非全选******************************/
//全选复选框
function checkAll(checkAll)
{
var len = document.Form1.elements.length;

for (i=0;i < len;i++)
{
if (document.Form1.elements[i].type == "checkbox")
{
if (document.Form1.elements[i].name.indexOf("chkSelect") != -1 && document.Form1.elements[i].name.indexOf("dgDataList") != -1)
{
document.Form1.elements[i].checked = checkAll.checked;

if (checkAll.checked)
{
document.all.hidCount.value = parseInt("10");
}
else
{
document.all.hidCount.value = parseInt("0");
}
}
}
}
}

//单个复选框选中时判断是否已全部选中,如全选中就选中全选项
function checkSing(chk)
{
if (chk.type == "checkbox")
{
if (chk.name.indexOf("chkSelect") != -1 && chk.name.indexOf("dgDataList") != -1)
{
if (document.all.hidCount.value == "")
{
document.all.hidCount.value = "0";
}

if (chk.checked == true)
{
document.all.hidCount.value = parseInt(document.all.hidCount.value) + 1;
}
else
{
document.all.hidCount.value = parseInt(document.all.hidCount.value) - 1;
}
}
}

var len = document.Form1.elements.length;
if (document.all.hidCount.value == document.all.hidItemCount.value)
{
for (i=0;i < len;i++)
{
if (document.Form1.elements[i].type == "checkbox")
{
if (document.Form1.elements[i].name.indexOf("chkSelAll") != -1 && document.Form1.elements[i].name.indexOf("dgDataList") != -1)
{
document.Form1.elements[i].checked = true;
}
}
}
}
else
{
for (i=0;i < len;i++)
{
if (document.Form1.elements[i].type == "checkbox")
{
if (document.Form1.elements[i].name.indexOf("chkSelAll") != -1 && document.Form1.elements[i].name.indexOf("dgDataList") != -1)
{
document.Form1.elements[i].checked = false;
}
}
}
}
}
du9232 2004-11-21
  • 打赏
  • 举报
回复
这样的功能应该用radiobox,不用js也能实现,
radiobox有个属性叫“group”,把它们设成同一个名字就只能选择一个了
lyfxzzb 2004-11-21
  • 打赏
  • 举报
回复
不想回送,就在前台用js来实现吧!
一个例子:全部checkbox选中
<script language="javascript">
function SelectAll()
{
var e = event.srcElement;
var inputs = document.forms[0].elements;
for (var i=0; i < inputs.length; i++)
if (inputs[i].type == "checkbox" && inputs[i].name.indexOf("CheckBox1") >=0)
inputs[i].checked = e.checked;
}
bqlhome 2004-11-21
  • 打赏
  • 举报
回复
我已解决了这个问题了,谢谢:

Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error:


Line 92: private void tbAddnew_Click(object sender, System.Web.UI.ImageClickEventArgs e)
Line 93: {
Line 94: DataRow myRow =myTable.NewRow();
Line 95: myRow["moneyId"]="ID";
Line 96: myRow["moneyName"]="f2";


Source File: e:\www\cmrp\form\pgmoneyrate.aspx.cs Line: 94

不懂!!!

62,243

社区成员

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

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

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

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