datagrid如何找到某控件的行号? 自定义了个datagrid,其中有一列CheckBox,当我钩选某个CheckBox的时候如何在事件中或得这个CheckBox在datagrid中的行号呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <%# (DataGrid1.PageSize * DataGrid1.CurrentPageIndex)+Container.ItemIndex +1 %> http://blog.csdn.net/lxs5i5j/archive/2007/01/29/1496662.aspx这是选择记录并输出到EXCEL ItemCommand事件里做就行if(((CheckBox)e.Item.FindControl("CheckBoxid")).Checked){ (e.Item.ItemIndex + 1 )就是这个行数} 但要设定CheckBox的CommandName属性名称ItemCommand事件里判断e.CommandNameif(e.CommandName == "你设定的值"){ if(((CheckBox)e.Item.FindControl("CheckBoxid")).Checked) { 行数 = e.Item.ItemIndex + 1; }} 但是ItemCommand好像只响应Button的事件,不响应CheckBox的事件哦。 databound里面,先定义checkbox类型然后把checkbox的值赋给一个变量,进行操作datagrid是不会相应checkbox的事件的 但是ItemCommand好像只响应Button的事件,不响应CheckBox的事件哦。______________________________________________________________哦,的确是这样,忘了,哈哈。这样加个事件就OK了<asp:TemplateColumn><ItemTemplate> <asp:CheckBox id="c1" runat="server" AutoPostBack="True" OnCheckedChanged="aaa"></asp:CheckBox></ItemTemplate></asp:TemplateColumn>后台写个public的方法public void aaa(object sender,EventArgs e)在这里循环判断dataGird里的控件就行了 To:Yzw_2006但应该以什么条件作判断呢?这样的话这一列中每个CheckBox的id都是"c1"的啊。 public void aaa(object sender,EventArgs e) { for(int i=0;i<DataGrid1.Items.Count;i++) { if(((CheckBox)DataGrid1.Items[i].FindControl("c1")).Checked) { Page.RegisterStartupScript("aaa","<script>alert('" + (i+1) + "');</script>"); } } }这里的i+1就是行号。如果有多个选择的话,存到是数组里吧。呵呵 public void aaa(object sender,EventArgs e){ if(((CheckBox)sender).Checked) { string strtemp = ((CheckBox)sender).ClientID.ToString(); int end = ((CheckBox)sender).ClientID.ToString().LastIndexOf("_"); int star = ((CheckBox)sender).ClientID.ToString().IndexOf("_ctl"); Page.RegisterStartupScript("aaa","<script>alert('" + strtemp.Substring((star+4),(end-(star+4))) + "');</script>"); }}事件里这么写也OK了,呵呵。 js问题,在线等。 如何清空存着html代码的string中某个text的value值 临时想出的一个解决方案,不知道可行不可行,想让大家帮忙一下。谢谢。 [请大家讨论]学习ASP.Net三个月的经验总结(待更新)。。。 出现“未将对象引用设置到对象的实例”问题,暴走005特别注意! 我想问一下,c#中是否有类似于像邮箱那样的……(在线等待) web.config配置问题 Ajax W3C的那个所见即所得是怎么做呢? 我设计类的思路正确吗? 按纽点击时间 如何限制用户通过URL来访问文件,绝对给分,性欲保证!
if(((CheckBox)e.Item.FindControl("CheckBoxid")).Checked)
{
(e.Item.ItemIndex + 1 )就是这个行数
}
ItemCommand事件里判断e.CommandNameif(e.CommandName == "你设定的值")
{
if(((CheckBox)e.Item.FindControl("CheckBoxid")).Checked)
{
行数 = e.Item.ItemIndex + 1;
}
}
然后把checkbox的值赋给一个变量,进行操作
datagrid是不会相应checkbox的事件的
______________________________________________________________
哦,的确是这样,忘了,哈哈。这样加个事件就OK了
<asp:TemplateColumn>
<ItemTemplate>
<asp:CheckBox id="c1" runat="server" AutoPostBack="True" OnCheckedChanged="aaa"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>后台写个public的方法public void aaa(object sender,EventArgs e)
在这里循环判断dataGird里的控件就行了
但应该以什么条件作判断呢?这样的话这一列中每个CheckBox的id都是"c1"的啊。
{
for(int i=0;i<DataGrid1.Items.Count;i++)
{
if(((CheckBox)DataGrid1.Items[i].FindControl("c1")).Checked)
{
Page.RegisterStartupScript("aaa","<script>alert('" + (i+1) + "');</script>");
}
}
}这里的i+1就是行号。如果有多个选择的话,存到是数组里吧。呵呵
{
if(((CheckBox)sender).Checked)
{
string strtemp = ((CheckBox)sender).ClientID.ToString();
int end = ((CheckBox)sender).ClientID.ToString().LastIndexOf("_");
int star = ((CheckBox)sender).ClientID.ToString().IndexOf("_ctl");
Page.RegisterStartupScript("aaa","<script>alert('" + strtemp.Substring((star+4),(end-(star+4))) + "');</script>");
}
}事件里这么写也OK了,呵呵。