datagridview想删除一行,但不删数据库

wdar1314 2010-01-05 09:52:15
在datagridview删除一行 然后把剩下的项点击确定 保存下来
作为一个人选课的记录
但是 应该怎么操作 怎么写代码呢 只删除一行 不能删除数据库的 ....
求教.........................
...全文
915 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
wdar1314 2010-01-06
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 zmcici 的回复:]
存在datatable里,在用数据源控件绑定,删除就只删除datatable里的一行,datatable是张虚拟表,没有删除数据库里的内容
[/Quote]
我上网 查了 好多
怎么才能存在datatable啊 我老是弄不明白 都混乐....
在datatable删除后 在绑定下 最后可以再把datable的数据插入到数据库?
wdar1314 2010-01-06
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 zmcici 的回复:]
存在datatable里,在用数据源控件绑定,删除就只删除datatable里的一行,datatable是张虚拟表,没有删除数据库里的内容
[/Quote]
我上网 查了 好多
怎么才能存在datatable啊 我老是弄不明白 都混乐....
在datatable删除后 在绑定下 最后可以再把datable的数据插入到数据库?
骑猪看海 2010-01-06
  • 打赏
  • 举报
回复
存在datatable里,在用数据源控件绑定,删除就只删除datatable里的一行,datatable是张虚拟表,没有删除数据库里的内容
jidianxueyuan 2010-01-06
  • 打赏
  • 举报
回复

<asp:GridView ID="view1" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<input type="button" value="delete" onclick="delRow(this)" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<script type="text/javascript">
function delRow(sender) {
var tr = sender.parentNode.parentNode;
var table = tr.parentNode.parentNode;
table.deleteRow(tr.rowIndex);
}
</script>
jidianxueyuan 2010-01-06
  • 打赏
  • 举报
回复

private void toolStripButton2_Click(object sender, EventArgs e)
{
if (dgvWorkLogInfo.SelectedRows.Count != 0)
{

dgvWorkLogInfo.Rows.Remove(dgvWorkLogInfo.SelectedRows[0]);

}
else
{
MessageBox.Show("当前没有选中的行数!","温馨提示",
MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}

gahyyai 2010-01-06
  • 打赏
  • 举报
回复
删除行
jiyan1221 2010-01-06
  • 打赏
  • 举报
回复
用一个临时的DataTable做数据源,想删除哪一行在Dt里删,不修改数据库。
lmafwo 2010-01-06
  • 打赏
  • 举报
回复
学习下
yzf86211861 2010-01-06
  • 打赏
  • 举报
回复
我这样做过 配合的 session
//创建表
DataTable dt = new DataTable();
dt.Columns.Add("附件标题", typeof(string));
dt.Columns.Add("附件大小", typeof(string));
dt.Columns.Add("附件路径", typeof(string));
dt.Columns.Add("检查附件ID", typeof(Guid));
SessionHelper.Add("upload", "files", yh);

DataTable dt = (DataTable)SessionHelper.Get("yh");
DataRow[] drs = dt.Select("隐患ID = '" + hfYHId.Value + "'");
if (drs.Length > 0) {
dt.Rows.Remove(drs[0]);

DataTable dtDel = (DataTable)SessionHelper.Get("yh");
DataRow dr = dtDel.NewRow();
dr[0] = hfYHId.Value;
dr[1] = "1";
dtDel.Rows.Add(dr);
SessionHelper.Add("del", dtDel);
}

只能参考 算个 思路吧。 代码不全。
wdar1314 2010-01-06
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 starseeker7 的回复:]
引用 13 楼 wdar1314 的回复:
引用 11 楼 camperer 的回复:
引用 2 楼 dream_hunter_ 的回复:
用临时表存储数据,然后绑定datagridview。
临时表存viewstata里。


支持。。不要用数据库直接作数据源。


其实想法挺好的  但是怎么用  gridview1的数据 作为 gridview2的数据源呢
  protected void GridView2_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    {
        ViewState["id"] = this.ViewState["id"].ToString().Substring(0, this.ViewState["id"].ToString().Length - 1);
        string sql = "select * from Insurance_Type where ID in (" + ViewState["id"].ToString() + ")";
        DataSet ds = c.data(sql);
        ViewState["id"] = ViewState["id"] + ",";
         this.GridView2.DataSource = ds;
        this.GridView2.DataBind();

    }

这个是 绑定  gridview2的..........直接从数据库取的


如果是使用臨時表
可以考慮更改上面代碼
string sql = "
if object_id('tempdb..##TBtemp') is not null "
" Create table ##TBtemp (/*從正是表裏拷貝表的定義過來*/) "+
" delete  ##TBtemp where ID in (" + ViewState["id"].ToString()+
") insert into " +
" select * from Insurance_Type where ID in (" + ViewState["id"].ToString() +
") select * from ##temp where ID in (" + ViewState["id"].ToString()+")";
需要退出界面的時
更新到正式的將原有id的幹掉,再從臨時表insert到正式表裏,
然後再 刪除 創建的臨時表
當然如果害怕同時操作問題出現,恩可以對臨時表明名的時候尾部加入當前時間參數,已保證其他人操作時不會發生衝突,不過如果同時保存還是會有點問題,,,嘛大不了做鎖,或者讀取時標示行標記
哦感覺這樣很麻煩的樣子- -
或者使用數組看行不?數據量不大的話就先把數據都搞下來,使用數組去幫定gridview
[/Quote]

哥................我看不懂 但是我知道 用临时表肯定不错 但我不知到怎么用......
starseeker7 2010-01-06
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 wdar1314 的回复:]
引用 11 楼 camperer 的回复:
引用 2 楼 dream_hunter_ 的回复:
用临时表存储数据,然后绑定datagridview。
临时表存viewstata里。


支持。。不要用数据库直接作数据源。


其实想法挺好的  但是怎么用  gridview1的数据 作为 gridview2的数据源呢
  protected void GridView2_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    {
        ViewState["id"] = this.ViewState["id"].ToString().Substring(0, this.ViewState["id"].ToString().Length - 1);
        string sql = "select * from Insurance_Type where ID in (" + ViewState["id"].ToString() + ")";
        DataSet ds = c.data(sql);
        ViewState["id"] = ViewState["id"] + ",";
        this.GridView2.DataSource = ds;
        this.GridView2.DataBind();

    }

这个是 绑定  gridview2的..........直接从数据库取的
[/Quote]

如果是使用臨時表
可以考慮更改上面代碼
string sql = "
if object_id('tempdb..##TBtemp') is not null "
" Create table ##TBtemp (/*從正是表裏拷貝表的定義過來*/) "+
" delete ##TBtemp where ID in (" + ViewState["id"].ToString()+
") insert into " +
" select * from Insurance_Type where ID in (" + ViewState["id"].ToString() +
") select * from ##temp where ID in (" + ViewState["id"].ToString()+")";
需要退出界面的時
更新到正式的將原有id的幹掉,再從臨時表insert到正式表裏,
然後再 刪除 創建的臨時表
當然如果害怕同時操作問題出現,恩可以對臨時表明名的時候尾部加入當前時間參數,已保證其他人操作時不會發生衝突,不過如果同時保存還是會有點問題,,,嘛大不了做鎖,或者讀取時標示行標記
哦感覺這樣很麻煩的樣子- -
或者使用數組看行不?數據量不大的話就先把數據都搞下來,使用數組去幫定gridview
xiongshao1943 2010-01-06
  • 打赏
  • 举报
回复
用隐藏吧
_老吴 2010-01-06
  • 打赏
  • 举报
回复
那你就用临时表
wdar1314 2010-01-06
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 fdh120 的回复:]
引用 10 楼 wang_arthur 的回复:
实在不行 在数据库相应表中 加一个字段。。
该字段 表示 是否显示数据的
例如 添加 state 字段 0:显示,1:不显示
然后在 databind 事件里面 写个判断
楼主可以这样试试

这个好,可行
[/Quote]

不能改数据库好不、、、、、、
不懂装懂 2010-01-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wang_arthur 的回复:]
实在不行 在数据库相应表中 加一个字段。。
该字段 表示 是否显示数据的
例如 添加 state 字段 0:显示,1:不显示
然后在 databind 事件里面 写个判断
楼主可以这样试试
[/Quote]
这个好,可行
wdar1314 2010-01-06
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 liherun 的回复:]
引用 6 楼 wuyq11 的回复:
DataGridView1.Rows.RemoveAt(0);
再删除数据源相关行

这个
[/Quote]

是gridview 没有 removeat这个方法...................
dengxiao1981 2010-01-06
  • 打赏
  • 举报
回复
liherun 2010-01-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wuyq11 的回复:]
DataGridView1.Rows.RemoveAt(0);
再删除数据源相关行
[/Quote]
这个
wdar1314 2010-01-06
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 camperer 的回复:]
引用 2 楼 dream_hunter_ 的回复:
用临时表存储数据,然后绑定datagridview。
临时表存viewstata里。


支持。。不要用数据库直接作数据源。
[/Quote]

其实想法挺好的 但是怎么用 gridview1的数据 作为 gridview2的数据源呢
protected void GridView2_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
ViewState["id"] = this.ViewState["id"].ToString().Substring(0, this.ViewState["id"].ToString().Length - 1);
string sql = "select * from Insurance_Type where ID in (" + ViewState["id"].ToString() + ")";
DataSet ds = c.data(sql);
ViewState["id"] = ViewState["id"] + ",";
this.GridView2.DataSource = ds;
this.GridView2.DataBind();

}

这个是 绑定 gridview2的..........直接从数据库取的
wdar1314 2010-01-06
  • 打赏
  • 举报
回复
数据库 不能在动了 因为 存储过程已经写好了
用临时表 存储数据 存储数据 在绑定 怎么操作呢 ...
我不会使用...另外 怎么存储 先把需要删除的行删除?
那么这已经出错了 不能影响数据库的数据.. 求教ing..
加载更多回复(12)

62,263

社区成员

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

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

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

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