高手们请进。给高分。困扰的一个难题

jiangyiming 2009-01-05 09:17:33
在asp.net gridview数据控件里面动态增加一个checkbox 控件。代码如下:



private string strColumnName;
private DataControlRowType dcrtColumnType;
/// <summary>
/// 动态添加模版列
/// </summary>
/// <param name="strColumnName">列名</param>
/// <param name="dcrtColumnType">列的类型</param>
public GenGridTemplateUtil(string strColumnName, DataControlRowType dcrtColumnType)
{
this.strColumnName = strColumnName;
this.dcrtColumnType = dcrtColumnType;
}

/// <summary>
/// 生成girdview列
/// </summary>
/// <param name="ctlContainer"></param>
public void InstantiateIn(System.Web.UI.Control ctlContainer)
{

switch (dcrtColumnType)
{
case DataControlRowType.Header: //列标题
Literal ltr = new Literal();
ltr.Text = strColumnName;
ctlContainer.Controls.Add(ltr);
break;
case DataControlRowType.DataRow: //模版列内容——加载CheckBox
CheckBox cb = new CheckBox();
cb.ID = "CheckBox";
// cb.AutoPostBack = true;
cb.Checked = false;
ctlContainer.Controls.Add(cb);
break;
}
}



TemplateField Field = new TemplateField();
Field.HeaderText = "选择";
Field.ShowHeader = true;
Field.HeaderTemplate = new GenGridTemplateUtil("选择", DataControlRowType.Header);
Field.ItemTemplate = new GenGridTemplateUtil("", DataControlRowType.DataRow);
this.grid_list.Columns.Insert(0, Field);

然后我用这段代码判断checkbox的值 无法取到,大家帮看看问题出现在什么东西,增加checkBOX的方法在pageload里面调用的

//GridView gridview = this.Page_List.FindControl("grid_list") as GridView;
//if (gridview != null)
//{
// for (int i = 0; i < gridview.Rows.Count; i++)
// {
// CheckBox CheckBox = gridview.Rows[i].Cells[0].FindControl("CheckBox") as CheckBox;


// if(CheckBox!=null)
// {
// if (CheckBox.Checked)
// {
// Id += gridview.Rows[i].Cells[1].Text.Trim();
// Id += "&";
// }
// }
// }
//}

...全文
127 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuxue1342 2009-01-06
  • 打赏
  • 举报
回复
// cb.AutoPostBack = true;
cb.Checked = false;
这上面句我觉得都没什么必要,默认就是没有选择的,第二,确定你的gridview已经得到,然后就是你的checkbox的ID换个名称试试!
再不行的话,你把这段代码改下看看:
CheckBox CheckBox =(CheckBox)gridview.Rows[i].Cells[0].Controls[0];
看看,还报错的话,你贴出来!
niitnanfeng 2009-01-06
  • 打赏
  • 举报
回复
不难啊
jiangyiming 2009-01-06
  • 打赏
  • 举报
回复
我的gridview是用户控件来做的 ,页面直接调用的。
然后在页面里面先找到用户控件的gridview ID,然后在从过找到的gridview来找这个里面checkbox选择的值。
除了JS没有解决办法了吗?
wojiaochenglong 2009-01-06
  • 打赏
  • 举报
回复
CheckBox CheckBox = gridview.Rows[i].........
还能这么写?
在服务器端写这个没用过,建议你可以考虑用js来写
chagel 2009-01-06
  • 打赏
  • 举报
回复
显示的时候checkbox加成功了吗?

CheckBox是加载模板列上的,在有多行数据时候,搜索它的id还是“ CheckBox”吗?
debug时候,看一下cell里面有checkbox吗?
showlie 2009-01-06
  • 打赏
  • 举报
回复
GridView中的CheckBox的ID格式一般是你自定义的ID_xxxx,所以无法通过ID名称获取控件
但是可以通过GridView.Rows[i].Cell[j].Controls[k]获取到,在表格中只有1个控件时k=0,如果0取不到,你可以查看网页源文件来看此控件在cell中的位置
gongsun 2009-01-05
  • 打赏
  • 举报
回复

//if (gridview != null)
//{

......

你可以直接用js获取CheckBox的值.



空心兜兜 2009-01-05
  • 打赏
  • 举报
回复
关注下
HDNGO 2009-01-05
  • 打赏
  • 举报
回复
注掉的这个是个什么事件触发的?
djf_1985 2009-01-05
  • 打赏
  • 举报
回复
mark

62,269

社区成员

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

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

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

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