Gridview多选操作问题求高手解惑

gridview模版已经添加checkbox<asp:TemplateField><ItemTemplate><asp:CheckBoxID="CheckBox3"run... gridview模版已经添加checkbox
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="CheckBox3" runat="server" />
</ItemTemplate>
</asp:TemplateField>

想实现 勾选后 点击“删除” 即可删除数据 但是现在checkbox3的勾选似乎被清空了 求高手解惑
protected void Button4_Click(object sender, EventArgs e)//buttonDelete
{

for (int i = 0; i < GridView1.Rows.Count; i++)
{

if (((CheckBox)GridView1.Rows[i].FindControl("CheckBox3")).Checked == true)//关键在这!勾选后 这里的if没有被执行 不知道原因...
{
sql.SqlNew("delete from SurveySI where No = '" + GridView1.DataKeys[i].Value + "'");//删除操作

}
Label2.Text = GridView1.DataKeys[i].Value.ToString().Trim();
}

QuestionBD("58");//sql绑定
}

第一次提问 没什么分 求高手帮忙
感谢各位大大帮忙~不过问题还是没有解决:那个if还是没有被操作
yeyingdeai和marco_98的方法基本上我都试过 datakey没有问题。。没有解决问题...
ysyhyt教的方法 我把判断加在IsChecked外面。。 不过也没解决问题
ノ灯火姗阑_说的方法。。我不是很看得懂 是不是指把Gridview里面的 autogeneratecolumns设置为true?这样Gridview就自己生成字段。。但是在不考虑是不要隐藏某些列的情况下 删除功能还是没有达到- -
求各位大大在帮忙看看 小弟谢过先~
代码贴不下了。。放下面
展开
 我来答
ノ灯火姗阑_e038
2010-07-01 · 超过26用户采纳过TA的回答
知道答主
回答量:81
采纳率:0%
帮助的人:47万
展开全部
autogeneratecolumns属性---表示列的自定义产生
在cs文件中多加一行代码,其思路如下:
(1)设置一个css类:
<style>
.hidden{display:none;}
</style>
(2)随后在GridView的列编辑对话框中,对需要进行隐藏的列进行设置,分别设置FootStyle,HeaderStyle,ItemStyle的CssClass属性为“hidden”
Ok,这样我们就实现了隐藏列的目的,同时又能保证对其进行数据绑定。

隐藏列的值
在RowCreated事件中书写如下代码
void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
e.Row.Cells[0].Visible = true; //如果想使第1列不可见,则将它的可见性设为false
//可以根据需要设置更多的列
}
因为在RowCreated事件(隐藏)在绑定时候发生,所以这样就即能将数据绑定到列上,又隐藏了该列.所
以可以访问到隐藏列的值
dt.Columns[0].ColumnMapping = MappingType.Hidden; //隐藏

--------为gridview控件里的“删除”列添加一个确认对话框----------------------
在删除按钮的那一列属性里面,把DeleteText属性设为
可以时img标签
<div id="de" onclick="JavaScript:return confirm('确定删除吗?')">删除</div
百度网友3a3160cbc
2010-07-01
知道答主
回答量:29
采纳率:50%
帮助的人:8.1万
展开全部
if (((CheckBox)GridView1.Rows[i].FindControl("CheckBox3")).Checked == true)
改成
if((GridView1.Rows[i].FindControl("CheckBox3")as CheckBox).Checked )
看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ysyhyt
2010-07-01 · TA获得超过1507个赞
知道小有建树答主
回答量:1599
采纳率:0%
帮助的人:689万
展开全部
GridView1.Rows,分为headerrow和footerrow以及datarow。
所以,你要在if前面加上一句
if(GridView1.Rows.rowtype==datacontrol.datarow)//手写代码,差不多是这个样子的。
不行你再问我。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
marco_98
2010-07-01 · TA获得超过452个赞
知道小有建树答主
回答量:553
采纳率:71%
帮助的人:271万
展开全部
分成两行写试试:
CheckBox cb = (CheckBox)GridView1.Rows[i].FindControl("CheckBox3);
if(cb.Checked)
{... }

但是我估计你的问题不在这,而在GridView1.DataKeys[i].Value
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
SoukieJoy1
2010-07-01
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
马甲号 贴下代码:
protected void Button4_Click(object sender, EventArgs e)
{

for (int i = 0; i < GridView1.Rows.Count; i++)
{

if (GridView1.Rows[0].RowType == DataControlRowType.DataRow)
{
CheckBox cb = (CheckBox)GridView1.Rows[i].FindControl("CheckBox3");

if (cb.Checked == true)
{
sql.SqlNew("delete from SurveySI where No = '" + GridView1.DataKeys[i].Value + "'");

Label2.Text = GridView1.DataKeys[i].Value.ToString().Trim();
}
Label3.Text = GridView1.DataKeys[i].Value.ToString().Trim();
}

QuestionBD("58");
}
}

<asp:GridView ID="GridView1" runat="server"
onrowcancelingedit="GridView1_RowCancelingEdit"
onrowediting="GridView1_RowEditing"
onrowupdating="GridView1_RowUpdating" BackColor="White"
BorderColor="#CC9966" BorderStyle="None" BorderWidth="1px" CellPadding="4"
onrowdatabound="GridView1_RowDataBound"
onrowcreated="GridView1_RowCreated">
<FooterStyle BackColor="#FFFFCC" ForeColor="#330099" />
<RowStyle BackColor="White" ForeColor="#330099" />
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="CheckBox3" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Question" HeaderText="问题" />
<asp:BoundField DataField="SelectItem" HeaderText="选项" />
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowSelectButton="True" />
</Columns>
<PagerStyle BackColor="#FFFFCC" ForeColor="#330099" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="#663399" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="#FFFFCC" />
<EditRowStyle BorderColor="#CC0000" BorderStyle="Solid" BackColor="#CC0000" />
</asp:GridView>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式