如下代码,一个删除按扭事件通过被选择的行的ID删除所选中的行,((CheckBox)dr.FindControl("xuanze")).Checked 能取到'xuanze'列的值,为何用注掉的string ID 。。 ,不能取到列‘Label1’的值,未注销的string ID = GridView1.DataKeys[1].Values[0].ToString();有个不能全部删除的问题,索引越界了。
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
Users user = new Users(); //创建Users对象
foreach (GridViewRow dr in GridView1.Rows)//对GridView中每行进行判断
{
if (((CheckBox)dr.FindControl("xuanze")).Checked)//如果该行复选按钮选择则删除
{
string ID = GridView1.DataKeys[1].Values[0].ToString();
// string ID = ((Label)dr.FindControl("Label1")).Text;//取出主键
user.UserID = ID;
user.DeleteByProc(ID);//调用Users类DeleteByProc方法删除用户
}
InitData();
}
}
gridview 如下:<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="UserID" BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" GridLines="Vertical" Width="100%" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating">
<Columns>
<asp:TemplateField HeaderText="选择">
<ItemTemplate>
<ASP:CHECKBOX ID="xuanze" runat="server"></ASP:CHECKBOX>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="用户编号">
<ItemTemplate>
<asp:Label ID="Label1" runat="server"><%# Eval("UserID") %></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="用户姓名">
<EditItemTemplate>
<asp:TextBox ID="txtName" runat="server" Text='<%# Eval("UserName") %>' Width="60"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label2" runat="server"><%# Eval("UserName") %></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="权限">
<EditItemTemplate>
<asp:TextBox ID="txtPower" runat="server" Text='<%# Eval("UserPower") %>' Width="60"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label3" runat="server"><%# Eval("UserPower") %></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField HeaderText="编辑" ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" HeaderText="删除" />
</Columns>
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
Users user = new Users(); //创建Users对象
foreach (GridViewRow dr in GridView1.Rows)//对GridView中每行进行判断
{
if (((CheckBox)dr.FindControl("xuanze")).Checked)//如果该行复选按钮选择则删除
{
string ID = GridView1.DataKeys[1].Values[0].ToString();
// string ID = ((Label)dr.FindControl("Label1")).Text;//取出主键
user.UserID = ID;
user.DeleteByProc(ID);//调用Users类DeleteByProc方法删除用户
}
InitData();
}
}
gridview 如下:<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="UserID" BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" GridLines="Vertical" Width="100%" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating">
<Columns>
<asp:TemplateField HeaderText="选择">
<ItemTemplate>
<ASP:CHECKBOX ID="xuanze" runat="server"></ASP:CHECKBOX>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="用户编号">
<ItemTemplate>
<asp:Label ID="Label1" runat="server"><%# Eval("UserID") %></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="用户姓名">
<EditItemTemplate>
<asp:TextBox ID="txtName" runat="server" Text='<%# Eval("UserName") %>' Width="60"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label2" runat="server"><%# Eval("UserName") %></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="权限">
<EditItemTemplate>
<asp:TextBox ID="txtPower" runat="server" Text='<%# Eval("UserPower") %>' Width="60"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label3" runat="server"><%# Eval("UserPower") %></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField HeaderText="编辑" ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" HeaderText="删除" />
</Columns>
解决方案 »
- 已知问题原因却不知道如何处理-------关于那些坑爹的分页。求救拉。
- 记得前段时间我看见过jQuery1.4支持iframe跨域访问来自动设置iframe高度的,但是找不到了
- 关于上传文件控件的某个属性??
- 导出Excel 关于权限的问题~~~~~~!
- 很郁闷呀,大家帮我看看是啥毛病吧,还是修改不了
- 如何根据一个数字,生成相对应数量的表格与文本框.并循环存入数据库?
- 请教datagrid中删除行确认的问题
- ASP.Net中如何用生成Excel文件?(C#版)
- 有谁知道哪个公司招聘.Net工程师?还有其价几何?
- 在ASP.NET中,如何设置WEBFORM的大小、最大化、最小化?
- 一个 连接表 更新问题,请关注
- 散分..........
试试
<asp:Label ID="Label1" runat="server" text='<%# Eval("UserID") %>'></asp:Label>
for (int i = 0; i < GridView1.Rows.Count; i++)
{
string ID = ((Label)GridView1.Rows[i].FindControl("Label1")).Text;
Response.Write(ID);
}
但你要看清GridView不是在编辑状态下!!
string ID = ((Label)GridView1.Rows[i].Cells[列].FindControl("Label1")).Text;
楼主是问这样为什么取不到ID是吗?
你用GridView1.DataKeys["ID"].Values[0].ToString();这样试试
原来如此,是这个问题,我用 string ID = ((Label)dr.FindControl("Label1")).Text;// 取出Label1的text,text没有赋值就是空了,这样看这很明白,谢谢。