GridView中删除某行

qnetg123 2009-12-30 04:29:55
假设GridView中某行的index为1
怎么才能把这行删除掉呢。
我用GridView1.DeleteRow(index);可是不行,那个大虾帮帮忙
...全文
1058 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
chen_ya_ping 2009-12-30
  • 打赏
  • 举报
回复
如果是隐藏的话,用JS来实现,很方面比如jQuery等等
要是要从数据库中删除,上面有答案。
lsd123 2009-12-30
  • 打赏
  • 举报
回复
.
上官云峰 2009-12-30
  • 打赏
  • 举报
回复
web页
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">LinkButton</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

cs页
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string sConnectionString;

// Modify the following string to correctly connect to your SQL Server.
sConnectionString = "Password=sa;User ID=sa;"
+ "Initial Catalog=wzdb;"
+ "Data Source=(local)";

SqlConnection conn = new SqlConnection(sConnectionString);
conn.Open();

DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select * from gc_table";
cmd.ExecuteNonQuery();
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.Fill(ds);
conn.Close();
conn.Dispose();

GridView1.DataSource = ds;
GridView1.DataBind();

}
}

protected void LinkButton1_Click(object sender, EventArgs e)
{
Control col = sender as Control;
int index = ((GridViewRow)col.Parent.Parent).RowIndex;
GridView1.Rows[index].Visible = false;
}
glassbody 2009-12-30
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20091119/12/e10d4ad4-efaa-401b-96a2-eaf77e307aec.html?4125
下载这个文件 里面有一个 用checkbox 和gridview控件实现删除的例子...
Joke_yu 2009-12-30
  • 打赏
  • 举报
回复
string courseid = gvClassCourse.DataKeys[e.RowIndex].Value.ToString();
List<CourseInfo> list = ViewState[""+hfClassId.Value+""] as List<CourseInfo>;
CourseInfo course = list.Find(ee=>ee.Code==courseid);
if(course!=null)
list.Remove(course);
gvClassCourse.DataSource = list;
gvClassCourse.DataBind();
Joke_yu 2009-12-30
  • 打赏
  • 举报
回复
先把取出来的数据取出来存到VIEWSTATE["XX"]中,或者是LIST<T>中,删除的时候遍历数据,然后在Remove()掉,再重新绑定。
wosizy 2009-12-30
  • 打赏
  • 举报
回复
链接数据源后 把dtwhere放入你执行删除的方法里就行了 (执行删除的方法需接受dtwhere)
列如(UpdateTempBySelect(dtwhere);//删除方法)
qnetg123 2009-12-30
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 flyerwing 的回复:]
protected void DataGridUserList_ItemCommand(object source, DataGridCommandEventArgs e)
        {
            string id = this.DataGridUserList.DataKeys[e.Item.ItemIndex].ToString();


            if (e.CommandName == "delete")
            {

                    if ()//写自己调用 底层的方法,或 sql 语句
                    {
                        Popwin.ShowMessage("删除成功!", this.Page);

                    }
                    else
                    {
                        Popwin.ShowMessage("删除失败!", this.Page);
                    }
                }

                //删除完后在把数据绑定一便
                //this.DataGridUserListDataBind();

            }

        }


[/Quote]
大哥,我需求的不是这个
wosizy 2009-12-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qnetg123 的回复:]
引用 4 楼 wosizy 的回复:
简单点的· 在gridview后面加一删除列
  然后如下
<ItemTemplate>
                <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Delete"
                    Text="删除" OnClientClick=' <%#  "if (!confirm(\"你确定要删除" + Eval("字段名称").ToString() + "吗?\")) return false;"%>'> </asp:LinkButton>
            </ItemTemplate>


能否不这样,因为有可能一次删除很多行,所以我在GridView中加了一个CheckBox控件,我判断这个控件选中的时候就删除掉,所以有没有办法不在后面加删除列的
[/Quote]
那就如下 我用到的。首先在页面增加一个删除按钮,然后在按钮的单击事件里写
DataTable dtwhere=new DataTable()
CheckBox chk;
//循环遍历GridView行数据
foreach (GridViewRow row in this.grv_OutInter.Rows)
{
//判断是否为数据行
if (row.RowType == DataControlRowType.DataRow)
{
DataRow dr;
dr = dtwhere.NewRow();

chk = (CheckBox)row.FindControl("你页面的CheckBoxID");//获取控件ID
dr[“字段名称”] = 值;//用户ID
.....
dr[“字段名称”] = Convert.ToString(chk.Checked);//是否选中
dtwhere.Rows.Add(dr);//添加到dtwhere
}
}
链接数据源
DbConnection conn = null;//数据库链接
.....
后面的不用我写了吧!·

flyerwing 2009-12-30
  • 打赏
  • 举报
回复
protected void DataGridUserList_ItemCommand(object source, DataGridCommandEventArgs e)
{
string id = this.DataGridUserList.DataKeys[e.Item.ItemIndex].ToString();


if (e.CommandName == "delete")
{

if ()//写自己调用 底层的方法,或 sql 语句
{
Popwin.ShowMessage("删除成功!", this.Page);

}
else
{
Popwin.ShowMessage("删除失败!", this.Page);
}
}

//删除完后在把数据绑定一便
//this.DataGridUserListDataBind();

}

}

qnetg123 2009-12-30
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 gac520 的回复:]
你不删除数据,只删除界面上貌似没啥意义。。。
[/Quote]

需求是这样子的,有办法吗
人间太皮 2009-12-30
  • 打赏
  • 举报
回复
你可以获取一个标识,然后去删除数据源中的数据,再来绑定.

如果不想删除数据源,貌似只能隐藏,不能删除
jackyuen1 2009-12-30
  • 打赏
  • 举报
回复
设置DataKeys...后台就可以取了删了~
fwacky 2009-12-30
  • 打赏
  • 举报
回复

==在Gridview 添加一列
<asp:TemplateColumn HeaderText="操作">
<itemstyle horizontalalign="Center" />
<itemtemplate>
<cc1:LinkButton id="lbActivate" runat="server" CommandName="delete" onclientclick="return window.confirm('如果删除该人员将无法恢复,是否要删除该人员?');"></cc1:LinkButton>
</itemtemplate>
<headerstyle horizontalalign="Center" width="15%" />
</asp:TemplateColumn>



//然后 通过,Gridview 的ItemCommand事件

protected void DataGridUserList_ItemCommand(object source, DataGridCommandEventArgs e)
{
string id = this.DataGridUserList.DataKeys[e.Item.ItemIndex].ToString();


if (e.CommandName == "delete")
{

if ()//写自己调用 底层的方法,或 sql 语句
{
Popwin.ShowMessage("删除成功!", this.Page);

}
else
{
Popwin.ShowMessage("删除失败!", this.Page);
}
}

//删除完后在把数据绑定一便
//this.DataGridUserListDataBind();

}

}


浪子-无悔 2009-12-30
  • 打赏
  • 举报
回复
你不删除数据,只删除界面上貌似没啥意义。。。
sky911911 2009-12-30
  • 打赏
  • 举报
回复
string id = this.DataGridUserList.DataKeys[e.Item.ItemIndex].ToString();
fwacky 2009-12-30
  • 打赏
  • 举报
回复

==在Gridview 添加一列
<asp:TemplateColumn HeaderText="操作">
<itemstyle horizontalalign="Center" />
<itemtemplate>
<cc1:LinkButton id="lbActivate" runat="server" CommandName="delete" onclientclick="return window.confirm('如果删除该人员将无法恢复,是否要删除该人员?');"></cc1:LinkButton>
</itemtemplate>
<headerstyle horizontalalign="Center" width="15%" />
</asp:TemplateColumn>

然后 通过,Gridview 的ItemCommand事件

protected void DataGridUserList_ItemCommand(object source, DataGridCommandEventArgs e)
{
string id = this.DataGridUserList.DataKeys[e.Item.ItemIndex].ToString();


if (e.CommandName == "delete")
{

if ()//写自己调用 底层的方法,或 sql 语句
{
Popwin.ShowMessage("删除成功!", this.Page);

}
else
{
Popwin.ShowMessage("删除失败!", this.Page);
}
}

//删除完后在把数据绑定一便
//this.DataGridUserListDataBind();

}

}
qnetg123 2009-12-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 randomfeel 的回复:]
想在数据库里删这条记录的话,通过DataKeyField,然后拼接sql去delete
如果仅仅是在gridview中删除,用gridview1.rows.Remove
[/Quote]
不是数据库里,只是在Web页面的GridView表中
qnetg123 2009-12-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wosizy 的回复:]
简单点的· 在gridview后面加一删除列
  然后如下
<ItemTemplate> 
                <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Delete" 
                    Text="删除" OnClientClick=' <%#  "if (!confirm(\"你确定要删除" + Eval("字段名称").ToString() + "吗?\")) return false;"%>'> </asp:LinkButton> 
            </ItemTemplate> 

[/Quote]
能否不这样,因为有可能一次删除很多行,所以我在GridView中加了一个CheckBox控件,我判断这个控件选中的时候就删除掉,所以有没有办法不在后面加删除列的
randomfeel 2009-12-30
  • 打赏
  • 举报
回复
想在数据库里删这条记录的话,通过DataKeyField,然后拼接sql去delete
如果仅仅是在gridview中删除,用gridview1.rows.Remove
加载更多回复(5)

62,047

社区成员

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

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

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

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