首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

怎么手动更新GridView到数据库?

2012-09-06 
如何手动更新GridView到数据库???有这个的一个类:C# codepublic class GVType{public int CartID { get s

如何手动更新GridView到数据库???
有这个的一个类:

C# code
public class GVType{    public int CartID { get; set; }    public int MemberID { get; set; }    public int GoodID { get; set; }    public string Name { get; set; }    public decimal MemberPrice { get; set; }    public int Count { get; set; }    public decimal Total { get; set; }    public string Unit { get; set; }    public string SettleWay { get; set; }    public DateTime AddTime { get; set; }    public string Unit_Show { get; set; }}


然后通过自定义方法 GetDataSourse()来获取数据源:
C# code
private static List<GVType> SCart;static public  IEnumerable<GVType> GetDataSourse(int memberID)    {        if (SCart == null)        {           //从数据库中得到DataSet并填充到SCart去        }        return SCart;    }


再在GridView的DataBinding事件中指定:
C# code
GridView1.DataSource = BLL_GridView.GetDataSourse(1000);

这样GridView就得到数据源了.
用户操作GrieView后,修改、删除、添加了某几行,然后再通过一个"保存"按钮将GridView更新回数据库里面去.
但是却不懂怎么把修改好的GridView怎么更新回数据库里面去.
比如说:
在GrieView删除了一行,但这样是删除List<GVType> SCart中的数据,这样对数据库不会产生任何影响.
DataSet中某一行标记为删除时,将DataSet更新回去的时候,数据库再会删除这一行。
当删除List<GVType> Scart中的一行时,如何做到这一行有“删除”标记的呢?
还有就是数据库表中CartID是递增的,又该怎么办?


我不想使用SqlDataSource绑定GridView,因为每改一下都要连一下数据库,感觉不怎么好。

各位大侠们指点我吧!


[解决办法]
那你只能在修改操作完成后,把gridview的数据读取到程序中,更新到数据库中

这样,事实上还是多次链接数据库,每修改、增加一条记录一般都要链接,否则你怎么把databale的值传递给数据库呢?


或者,你以字符串的形式,重新组织取得的gridview里的值,然后在存储过程中再拆分开来,写入数据库
[解决办法]
如何做到这一行有“删除”标记的呢? 
C# code
public class GVType{    public int CartID { get; set; }    public int MemberID { get; set; }    public int GoodID { get; set; }    public string Name { get; set; }    public decimal MemberPrice { get; set; }    public int Count { get; set; }    public decimal Total { get; set; }    public string Unit { get; set; }    public string SettleWay { get; set; }    public DateTime AddTime { get; set; }    public string Unit_Show { get; set; }    public int IsDel {get;set;}}
[解决办法]
一般用 断开式连接就可以搞定了吧!

以下是代码段。

C# code
 
private DataSet dataSet = new DataSet();
private SqlDataAdapter dataAdapter;
private SqlConnection conn;

//构造方法里 获取 conn连接
.........

//加载事件
private void Form1_Load(object sender, EventArgs e)
    {
      try
      {
        //查询SQL语句
        string sql = "select * form 表1";
        //初始化DataAdapter
        dataAdapter = new SqlDataAdapter(sql, conn);
        //填充DataSet
        dataAdapter.Fill(dataSet, "表1");
        //指定DataGridView的数据源
        DgvTeacher.DataSource = dataSet.Tables["表1"];

      }
      catch (Exception ex)
      {
        MessageBox.Show("查找数据时出错", "错误提示");
      }
  }


  //保存按钮事件
    private void button1_Click(object sender, EventArgs e)


    {
      try
      {
        DialogResult result = MessageBox.Show("确定要修改数据到数据库中吗?", "操作提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
        if (result == DialogResult.OK)
        {
          //自动生成修改的Command命令
          SqlCommandBuilder builder = new SqlCommandBuilder(dataAdapter);
          //提交给数据库更新
          dataAdapter.Update(dataSet, "表1");
          MessageBox.Show("保存修改成功!","操作提示");

        }
      }
      catch (Exception ex)
      {
        MessageBox.Show("修改出错了!","错误提示");
        Console.WriteLine(ex.Message);
      }
    }

热点排行