如何在GridView中添加一checkbox行
我想做的是:GridView中显示查询出来的数据,同时添加一checkbox行,当checkbox选中,其同列的数据不能修改。请高手指教,如果可以,如何捕捉checkbo...
我想做的是:GridView中显示查询出来的数据,同时添加一checkbox行,当checkbox选中,其同列的数据不能修改。请高手指教,如果可以,如何捕捉checkbox选中事件也请指教一下
注意:我要加的是行,不是列。 展开
注意:我要加的是行,不是列。 展开
8个回答
展开全部
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;");
}
}
}
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;");
}
}
}
推荐于2017-10-15 · 知道合伙人互联网行家
关注
展开全部
一:添加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;
}
}
<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;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<asp:CheckBoxField DataField="结案" HeaderText="结案" SortExpression="结案" />
在gridview的<Columns>...</Columns>之间加上这一句,OK
然后选中的逻辑自己判断
不行再消息我
那你直接在gridview模拟一行checkbox,修改的时候检查一下该列对应的checkbox是否选中,不就OK了
在gridview的<Columns>...</Columns>之间加上这一句,OK
然后选中的逻辑自己判断
不行再消息我
那你直接在gridview模拟一行checkbox,修改的时候检查一下该列对应的checkbox是否选中,不就OK了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
GridVie你在设计窗口的智能标识中去编辑他的Item,里面就可以直接添加CheckBox控件了。或者也可以直接在html中直接写
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
全是治标不治本的回答,分我要了,就两句话:
任何对象中,只要包含Controls属性的都可以添加控件,找你单元格的Controls自己写。还有想让一行无效容易,让一列只有遍历每行的对应索引元素了,本来gridview里的数据就是由行组成的不是由列组成的。
拿下!
任何对象中,只要包含Controls属性的都可以添加控件,找你单元格的Controls自己写。还有想让一行无效容易,让一列只有遍历每行的对应索引元素了,本来gridview里的数据就是由行组成的不是由列组成的。
拿下!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询