有这个的一个类: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()来获取数据源:private static List<GVType> SCart;
static public IEnumerable<GVType> GetDataSourse(int memberID)
{
if (SCart == null)
{
//从数据库中得到DataSet并填充到SCart去
} return SCart;
}
再在GridView的DataBinding事件中指定:GridView1.DataSource = BLL_GridView.GetDataSourse(1000);这样GridView就得到数据源了.
用户操作GrieView后,修改、删除、添加了某几行,然后再通过一个"保存"按钮将GridView更新回数据库里面去.
但是却不懂怎么把修改好的GridView怎么更新回数据库里面去.
比如说:
在GrieView删除了一行,但这样是删除List<GVType> SCart中的数据,这样对数据库不会产生任何影响.
DataSet中某一行标记为删除时,将DataSet更新回去的时候,数据库再会删除这一行。
当删除List<GVType> Scart中的一行时,如何做到这一行有“删除”标记的呢?
还有就是数据库表中CartID是递增的,又该怎么办?
我不想使用SqlDataSource绑定GridView,因为每改一下都要连一下数据库,感觉不怎么好。各位大侠们指点我吧!
{
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()来获取数据源:private static List<GVType> SCart;
static public IEnumerable<GVType> GetDataSourse(int memberID)
{
if (SCart == null)
{
//从数据库中得到DataSet并填充到SCart去
} return SCart;
}
再在GridView的DataBinding事件中指定:GridView1.DataSource = BLL_GridView.GetDataSourse(1000);这样GridView就得到数据源了.
用户操作GrieView后,修改、删除、添加了某几行,然后再通过一个"保存"按钮将GridView更新回数据库里面去.
但是却不懂怎么把修改好的GridView怎么更新回数据库里面去.
比如说:
在GrieView删除了一行,但这样是删除List<GVType> SCart中的数据,这样对数据库不会产生任何影响.
DataSet中某一行标记为删除时,将DataSet更新回去的时候,数据库再会删除这一行。
当删除List<GVType> Scart中的一行时,如何做到这一行有“删除”标记的呢?
还有就是数据库表中CartID是递增的,又该怎么办?
我不想使用SqlDataSource绑定GridView,因为每改一下都要连一下数据库,感觉不怎么好。各位大侠们指点我吧!
或者,你以字符串的形式,重新组织取得的gridview里的值,然后在存储过程中再拆分开来,写入数据库
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;}
}
添加了isdel属性,自己定规则吧,默认为0,1为删除。或者直接从List<T>中移除也可以呀,SCart.Remove(Object obj);??还有就是数据库表中CartID是递增的,又该怎么办? 这个是什么意思??
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);
}
}
在按钮事件里dataSet是空值,为什么?