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);
但是这样处于编辑状态,我的删除就用不了了
...全文
225 3 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复

62,046

社区成员

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

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

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

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