datagridview 删除 编辑

后浪 2011-11-08 05:29:17

public DataGridView dgvXML;
public int x = 820;
public int y = 520;
xmlroot xmlroot = SiteConfig.xmlroot();

private static int delCount = 0;
private static bool flag = false;

public SiteXml()
{
this.Location = new System.Drawing.Point(200, 74);
this.Size = new System.Drawing.Size(x, y);
this.BackgroundImage = FormResources.none;
this.BackColor = System.Drawing.Color.White;
this.AutoScroll = true;

dgvXML = new DataGridView();
dgvXML.Location = new System.Drawing.Point(0,0);
dgvXML.Size = new System.Drawing.Size(x,y);
dgvXML.UserDeletingRow += new DataGridViewRowCancelEventHandler(this.btnDelete_Click);//删除信息
dgvXML.CellEndEdit += new DataGridViewCellEventHandler(dgvXML_CellEndEdit);//修改信息
dgvXML.UserAddedRow += new DataGridViewRowEventHandler(dgvXML_UserAddedRow); //添加信息
dgvXML.DefaultValuesNeeded+=new DataGridViewRowEventHandler(dgvXML_DefaultValuesNeeded);
LoadXml();
this.Controls.Add(dgvXML);

}

/// <summary>
/// xml数据源
/// </summary>
/// <returns></returns>
ICollection IDataSource()
{
DataView dv = null;
try {
string strID;//站点ID
string strText;//站点名称
string strSpace;//空间名
string strCls;//类名
string strMinPage;//最小页码
string strMaxPage;//最大页码
string strlisturl;//列表地址
string strInfourl;//信息地址

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("站点标识", typeof(string)));
dt.Columns.Add(new DataColumn("站点名称", typeof(string)));
dt.Columns.Add(new DataColumn("空间", typeof(string)));
dt.Columns.Add(new DataColumn("所属类", typeof(string)));
dt.Columns.Add(new DataColumn("最小页码", typeof(string)));
dt.Columns.Add(new DataColumn("最大页码", typeof(string)));
dt.Columns.Add(new DataColumn("列表地址", typeof(string)));
dt.Columns.Add(new DataColumn("信息地址", typeof(string)));
DataRow dr;
int i=0;
foreach (sitetemplate sitetmp in xmlroot.sitetemplate)
{
strID = sitetmp.id; //站点id
strText = sitetmp.text;//站点名称
strSpace =sitetmp.myspace; //空间名
strCls = sitetmp.myclass;//所属类
strMinPage = sitetmp.minpage;//最小页码
strMaxPage = sitetmp.maxpage; //最大页码
strlisturl = sitetmp.listurl; //列表地址
strInfourl = sitetmp.infourl;//信息地址

dr = dt.NewRow();
dr[0] = strID;
dr[1] = strText;
dr[2] = strSpace;
dr[3] = strCls;
dr[4] = strMinPage;
dr[5] = strMaxPage;
dr[6] = strlisturl;
dr[7] = strInfourl;
dt.Rows.Add(dr);
i =i+1;
}
dv = new DataView(dt);
}
catch
{

}
return dv;
}
/// <summary>
/// 加载xml运行调试
/// </summary>
public void LoadXml() {
dgvXML.DataSource = IDataSource();
}

/// <summary>
/// 删除信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnDelete_Click(object sender, DataGridViewRowCancelEventArgs e)
{

string[] nums;
nums = new string[this.dgvXML.SelectedRows.Count];

for (int i = 0; i < nums.Length; i++)
{
nums[i] = this.dgvXML.SelectedRows[i].Cells[0].Value.ToString();
}
if (delCount == 0)
{
flag = MessageBox.Show("确认删除多条记录吗?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes;
}
else if (delCount == nums.Length - 1)
{
delCount = 0;
flag = false;
}
if (flag)
{
foreach (DataGridViewRow dgvRow in dgvXML.SelectedRows)
{
string SiteID = dgvRow.Cells[0].Value.ToString();
xmlroot.sitetemplate.Remove(xmlroot.sitetemplate.Find(delegate(sitetemplate p) { return p.id == SiteID; }));
}
SiteConfig.FormatConfig(xmlroot);
delCount = delCount + 1;
}
else
{
e.Cancel = true;
}
}
/// <summary>
/// 修改信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dgvXML_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{

string strID;//站点ID
string strText;//站点名称
string strSpace;//空间名
string strCls;//类名
string strMinPage;//最小页码
string strMaxPage;//最大页码
string strlisturl;//列表地址
string strInfourl;//信息地址
strID = dgvXML.CurrentRow.Cells[0].Value.ToString();
strText = dgvXML.CurrentRow.Cells[1].Value.ToString();
strSpace = dgvXML.CurrentRow.Cells[2].Value.ToString();
strCls = dgvXML.CurrentRow.Cells[3].Value.ToString();
strMinPage = dgvXML.CurrentRow.Cells[4].Value.ToString();
strMaxPage = dgvXML.CurrentRow.Cells[5].Value.ToString();
strlisturl = dgvXML.CurrentRow.Cells[6].Value.ToString();
strInfourl = dgvXML.CurrentRow.Cells[7].Value.ToString();

int i = 0;
foreach (sitetemplate sitetmp in xmlroot.sitetemplate)
{
if (strID ==sitetmp.id)
{
xmlroot.sitetemplate[i].text = strText;
xmlroot.sitetemplate[i].myspace = strSpace;
xmlroot.sitetemplate[i].myclass = strCls;
xmlroot.sitetemplate[i].minpage = strMinPage;
xmlroot.sitetemplate[i].maxpage = strMaxPage;
xmlroot.sitetemplate[i].listurl = strlisturl;
xmlroot.sitetemplate[i].infourl = strInfourl;
SiteConfig.FormatConfig(xmlroot);
}
i = i + 1;
}
}

直接在datagridview上操作 删除,修改都实现了
但是修改的时候选中cell 会全部选中里面的值,我想让焦点处于 编辑状态
网上都是说this.dataGridView1.BeginEdit(false);
但是这样处于编辑状态,我的删除就用不了了
...全文
230 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
后浪 2011-11-08
  • 打赏
  • 举报
回复
在线等....
后浪 2011-11-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 insus 的回复:]

参考:
http://www.cnblogs.com/insus/articles/1944295.html
[/Quote]
datagridview 不是gridview 属于winform里面的
insus 2011-11-08
  • 打赏
  • 举报
回复
1. 基类说明 1.1 基类结构图 1.2 基类说明 1.2.1 BaseEditClass BaseEditClass是所有单表编辑功能的基类。BaseEditClass从NSGForm继承,以处理统一的界面和字体风格。 BaseEditClass抽象出了编辑类功能通用的方法并定义为基类方法,以便子类继承,并增加自己的代码。  自定义属性 名称 说明 DataTable 功能所编辑的数据表 DataState 功能所处的状态:浏览(dsBrowse)、新增(dsInsert)、编辑(dsEdit) BatchSave 是否批量提交数据表,默认为False DeleteWarn 在删除记录时是否提示,默认为True  自定义方法 名称 说明 FormInit 在FormLoad时被调用,具体功能中可重载该方法添加自定义的初始化代码 PostData 具体功能中需要重载该方法,并调用具体的TableAdapter.Update(row),以保存数据至数据库。 RefreshData 统一的刷新数据表过程,具体功能中需要重载该方法,并调用具体的TableAdapter.Fill(DataTable),以查询数据 DataValid 统一的数据验证方法,在保存数据前被调用。具体功能中可重载该方法添加自定义的数据校验代码 NewRecord 在新增数据时被调用,在具体过程中可重载该方法添加自定义的新增记录默认值 SaveData 保存数据的方法,具体功能中调用该过程保存数据 DeleteData 删除数据的方法,具体功能中调用该过程删除数据 CancelData 取消数据修改的方法,具体功能中调用该过程取消数据修改 1.2.2 BaseGridEdit BaseGridEdit是所有直接使用DataGridView进行编辑的功能的基类。BaseGridEdit从BaseEditClass继承。 自定义属性 名称 说明 Grid 编辑所用的DataGridView 自定义方法 名称 说明 RecordValid 统一的数据验证方法,在单条保存数据前被调用。具体功能中可重载该方法添加自定义的数据校验代码 1.2.3 BaseGridEditForm BaseGridEditForm是所有直接使用DataGridView进行编辑的功能的模板。所有直接使用DataGridView进行编辑的功能都需要从该模板拷贝后进行修改。 2. 模板使用方法 2.1 BaseGridEditForm 使用BaseGridEditForm需要按以下四步操作就可以得到需要的功能。 一、 先从BaseGridEditForm拷贝文件到工程后修改类名、命名空间 二、 在项目的数据集中增加TableAdapter,以查询需要维护的指定的数据表 三、 将DataGridView绑定到新增的数据表 四、 修改以下基类方法 名称 说明 构造方法 增加”DataTable属性=新增数据表”的代码 FormInit 增加需要的Form初始化代码,如RefreshData以获得数据 PostData 增加一行代码:新增的TableAdapter.Update(row) RefreshData 增加使用新增TableAdapter.Fill(DataTable)的代码,以获得查询数据。注意:代码需要写在IsRefreshData = true;和 IsRefreshData = false;语句的中间 RecordValid 增加自定义的数据校验语句。 NewRecord 增加自定义的新增数据默认值代码。

62,244

社区成员

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

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

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

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