如何在GridView中添加一checkbox行

我想做的是:GridView中显示查询出来的数据,同时添加一checkbox行,当checkbox选中,其同列的数据不能修改。请高手指教,如果可以,如何捕捉checkbo... 我想做的是:GridView中显示查询出来的数据,同时添加一checkbox行,当checkbox选中,其同列的数据不能修改。请高手指教,如果可以,如何捕捉checkbox选中事件也请指教一下
注意:我要加的是行,不是列。
展开
 我来答
xx_lzj
推荐于2017-09-17 · TA获得超过970个赞
知道大有可为答主
回答量:578
采纳率:0%
帮助的人:727万
展开全部
1、在GridView上启用编辑;
2、在RowCreated事件委托函数中添加代码,用Html标记在Header上创建复选框(没有按楼主要求添加新行,我觉得这样更好,若嫌太宽,则添加换行符),如:
if (e.Row.RowType == DataCont,rolRowType.Header)
{
for (int i = 1; i < e.Row.Cells.Count; i++)
{
string nameAndId = "CheckBox" + i.ToString();
e.Row.Cells[i].Text = "<input id=\"" + nameAndId + "\" type=\"checkbox\" name=\"" + nameAndId + "\" />"+e.Row.Cells[i].Text;
}
}
3、在RowEditing事件委托函数中记录所选编辑行索引,如:
ViewState["editLine"] = e.NewEditIndex;
4、最后在PreRender事件委托函数中,为当前编辑行的各列的文本框,建立OnKeyPress事件客户端处理函数,以禁止或允许编辑,如:
if (ViewState["editLine"] != null)
{
GridViewRow row=GridView1.Rows[Convert.ToInt32(ViewState["editLine"])];
for (int i = 1; i < row.Cells.Count; i++)
{
if (row.Cells[i].HasControls())
{
TextBox tb = (TextBox)row.Cells[i].Controls[0];
string checkBoxId = "CheckBox" + i.ToString();
tb.Attributes.Add("onKeyPress", "javascript:if(document.getElementById('" + checkBoxId + "').checked) return false;");
}
}
}
七鑫易维信息技术
2024-09-02 广告
Play Video 七鑫易维是致力于机器视觉和人工智能领域的高新科技企业,迄今已专注眼球追踪技术的研发、创新与应用超过14年,拥有完全自主知识产权,全球专利总量655余项。 作为眼球追踪技术领域的全球知名品牌,七鑫易维的产品体系覆盖眼动分... 点击进入详情页
本回答由七鑫易维信息技术提供
百度网友96ffcf7
推荐于2017-10-15 · 知道合伙人互联网行家
百度网友96ffcf7
知道合伙人互联网行家
采纳数:22721 获赞数:118721
从事多年网络方面工作,有丰富的互联网经验。

向TA提问 私信TA
展开全部
一:添加CheckBox
<asp:GridView>
<Columns>
<asp:TemplateField HeaderText="选择">
<ItemStyle HorizontalAlign="Center" Height="35px" Width="720px"/>
<ItemTemplate>
<asp:CheckBox ID="CheckBox" runat="server" ></asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Code" HeaderText="学号" SortExpression="Code">
<ItemStyle HorizontalAlign="Center" Height="35px" Width="720px"/>
</asp:BoundField>
<asp:BoundField DataField="Name" HeaderText="姓名">
<ItemStyle HorizontalAlign="Center" Height="35px" Width="720px"/>
</asp:BoundField>
<asp:BoundField DataField="SchoolName" HeaderText="所在学校">
<ItemStyle HorizontalAlign="Center" Height="35px" Width="720px"/>
</asp:BoundField>
<asp:BoundField DataField="Email" HeaderText="E-mail">
<ItemStyle HorizontalAlign="Center" Height="35px" Width="720px"/>
</asp:BoundField>
</Columns>
</asp:GridView>
二:查看哪一行的CheckBox被选中
foreach(GridViewRow row in this.StudentGridView.Rows)
{
Control ctrl = row.FindControl("CheckBox");

if ((ctrl as CheckBox).Checked)
{
TableCellCollection cell = row.Cells;
string studentCode = cell[1].Text;
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yizusong
2008-02-01 · TA获得超过3045个赞
知道大有可为答主
回答量:4516
采纳率:0%
帮助的人:4458万
展开全部
<asp:CheckBoxField DataField="结案" HeaderText="结案" SortExpression="结案" />

在gridview的<Columns>...</Columns>之间加上这一句,OK
然后选中的逻辑自己判断

不行再消息我

那你直接在gridview模拟一行checkbox,修改的时候检查一下该列对应的checkbox是否选中,不就OK了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tiancaolin
2008-02-01
知道答主
回答量:41
采纳率:0%
帮助的人:27.6万
展开全部
GridVie你在设计窗口的智能标识中去编辑他的Item,里面就可以直接添加CheckBox控件了。或者也可以直接在html中直接写
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kavguodawei
2008-02-06 · 超过23用户采纳过TA的回答
知道答主
回答量:137
采纳率:0%
帮助的人:93.7万
展开全部
全是治标不治本的回答,分我要了,就两句话:

任何对象中,只要包含Controls属性的都可以添加控件,找你单元格的Controls自己写。还有想让一行无效容易,让一列只有遍历每行的对应索引元素了,本来gridview里的数据就是由行组成的不是由列组成的。

拿下!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式