背景:
一.在C#.NET 2003 环境中,windows应用程序.
二.SQLSERVER数据库中有两张表。表一名modelinfo,字段名:modelId(模型ID,主键)、modelName(模型名称)、 nodelNumber(节点数量) ; 表二n名odeinfo字段名:modelId(模型ID,主键)、nodeId(节点ID)、 nodeNumber(节点数量) , nodeName(节点名称)、txt(想定文档)。
三.部分代码:
String jdName = " "; //声明两个全局变量
int m; privat void Edit_clik(object sender,system,EventArgs e)
{
//节点信息编辑 int index= dataGrid1 CurrentRow Index;//选中dataGrid1查询结果的一行,获取选中行的索引.
DataSet myDataSet = (DataSet)dataGrid1.DataSource;
DataRow row = myDataSet.Tables[0].Row[index];
m=Convert.ToInt 32 (row["modelId"].ToString());//获得主键的数码.
int n = Convert.ToInt 32 (row["nodeNumber"].ToString()); //获得nodeNumber数码
for(int j = 0; j <n , j++) //循环,动态生成n个节点按钮.
{
Button but = new Button();
but.Left = 100+j*100;
but.Top = 100;
but.Size = new Size(55,55);
but.Name=j.ToString(); // 生成节点名称
but.MouseDown +=New MouseEventHandler(but_MouseDown); //右击事件
but.ContextMenu = contextMenu1; //上下文菜单
but.Image= Image.FromFile(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Porsenal)+@"\image.git"); //动态生成节点按钮图标;
}
tabPage1.Controls.Add(but); tabPage1.show(); //生成的节点跳转显示在tabPage1上. (注:先前dataGrid1是在tabPage2页面上的) }
private Void menuItem12_clik(boject sender,System.EventArgs e)
{
//在某个节点图标上右击选择上下文菜单"编辑"项,弹出新Form2,显示该节点信息 Form 2 frm = new Form2(); //对节点信息框Form2实例化
sqlconnection con= new sqlconnection (......) ;
con.Open();
sqlDataAdapter da = new sqlDataAdapter("select * from nodeinfo where modelId ='"+ m.tostring()+"'",con);
DataSet ds = new DataSet();
da.Fill(ds,"nodeinfo");
int k= convert.ToInt 32 (jdName.ToString()); //
DataRow row = ds.Tables["nodeinfo"].Rows[k]; // 建立jdName和nodeId的对应关系.通过modelId和nodeId来唯一确定一条信息. frm.texBox1.Text = row.ItemArrary[0].Tostring(); //对应modelId列
frm.texBox2.Text = row.ItemArrary[1].Tostring(); //对应nodeNumber列
frm.texBox3.Text = row.ItemArrary[2].Tostring(); //对应nodeId列
frm.texBox4.Text = row.ItemArrary[3].Tostring(); //对应nodeName列
frm.texBox5.Text = row.ItemArrary[4].Tostring(); //对应txt列 frm.show(); //显示节点信息.
问题一:要在Form2中实现对相应信息的修改和保存,怎样把修改结果保存到数据库?????????????
还要求同时更改两张表的信息,怎样实现??????????????????????????
}
private voidBut_MouseDoen(object Sender.Mouse EventArgs e )
{
Button but = new Button();
but =(Button)Sender;
jdName = but.Name; //用节点名作为节点属性,在右键单击时唯一标识选中的节点
}
private void menuItem13_Clik(boject sender,System.EventArgs e)
{
//在某个节点图标上右击选择上下文菜单"删除"项,删除该节点图标及相应信息.
问题二: 如何实现删除???????
似乎不能直接用jdName 来标识选中的节点了,因为this_tabPage1.Controls.Remove ( 存放Controls value,不能直接存放 "jdName",不知道怎么转换???? ) if (MessageBox.Show("确定删除此节点及其信息?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Waring)==DialogaResult.Yes)
{
sqlConnection con = new ...;
con.Open();
sqlCommand cmd = newSqlCommand ("delet from nodeinfo where modelId='"+m.tostring()+"'and nodeId = '"+jdName+"'",con);
cmd.Connection = con;
con.Close();
MessageBox.Show("删除成功");
} // 问题三: 这段代码能实现在数据库删除相应的信息吗??怎样该会更好呢?????????????????????
}
一.在C#.NET 2003 环境中,windows应用程序.
二.SQLSERVER数据库中有两张表。表一名modelinfo,字段名:modelId(模型ID,主键)、modelName(模型名称)、 nodelNumber(节点数量) ; 表二n名odeinfo字段名:modelId(模型ID,主键)、nodeId(节点ID)、 nodeNumber(节点数量) , nodeName(节点名称)、txt(想定文档)。
三.部分代码:
String jdName = " "; //声明两个全局变量
int m; privat void Edit_clik(object sender,system,EventArgs e)
{
//节点信息编辑 int index= dataGrid1 CurrentRow Index;//选中dataGrid1查询结果的一行,获取选中行的索引.
DataSet myDataSet = (DataSet)dataGrid1.DataSource;
DataRow row = myDataSet.Tables[0].Row[index];
m=Convert.ToInt 32 (row["modelId"].ToString());//获得主键的数码.
int n = Convert.ToInt 32 (row["nodeNumber"].ToString()); //获得nodeNumber数码
for(int j = 0; j <n , j++) //循环,动态生成n个节点按钮.
{
Button but = new Button();
but.Left = 100+j*100;
but.Top = 100;
but.Size = new Size(55,55);
but.Name=j.ToString(); // 生成节点名称
but.MouseDown +=New MouseEventHandler(but_MouseDown); //右击事件
but.ContextMenu = contextMenu1; //上下文菜单
but.Image= Image.FromFile(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Porsenal)+@"\image.git"); //动态生成节点按钮图标;
}
tabPage1.Controls.Add(but); tabPage1.show(); //生成的节点跳转显示在tabPage1上. (注:先前dataGrid1是在tabPage2页面上的) }
private Void menuItem12_clik(boject sender,System.EventArgs e)
{
//在某个节点图标上右击选择上下文菜单"编辑"项,弹出新Form2,显示该节点信息 Form 2 frm = new Form2(); //对节点信息框Form2实例化
sqlconnection con= new sqlconnection (......) ;
con.Open();
sqlDataAdapter da = new sqlDataAdapter("select * from nodeinfo where modelId ='"+ m.tostring()+"'",con);
DataSet ds = new DataSet();
da.Fill(ds,"nodeinfo");
int k= convert.ToInt 32 (jdName.ToString()); //
DataRow row = ds.Tables["nodeinfo"].Rows[k]; // 建立jdName和nodeId的对应关系.通过modelId和nodeId来唯一确定一条信息. frm.texBox1.Text = row.ItemArrary[0].Tostring(); //对应modelId列
frm.texBox2.Text = row.ItemArrary[1].Tostring(); //对应nodeNumber列
frm.texBox3.Text = row.ItemArrary[2].Tostring(); //对应nodeId列
frm.texBox4.Text = row.ItemArrary[3].Tostring(); //对应nodeName列
frm.texBox5.Text = row.ItemArrary[4].Tostring(); //对应txt列 frm.show(); //显示节点信息.
问题一:要在Form2中实现对相应信息的修改和保存,怎样把修改结果保存到数据库?????????????
还要求同时更改两张表的信息,怎样实现??????????????????????????
}
private voidBut_MouseDoen(object Sender.Mouse EventArgs e )
{
Button but = new Button();
but =(Button)Sender;
jdName = but.Name; //用节点名作为节点属性,在右键单击时唯一标识选中的节点
}
private void menuItem13_Clik(boject sender,System.EventArgs e)
{
//在某个节点图标上右击选择上下文菜单"删除"项,删除该节点图标及相应信息.
问题二: 如何实现删除???????
似乎不能直接用jdName 来标识选中的节点了,因为this_tabPage1.Controls.Remove ( 存放Controls value,不能直接存放 "jdName",不知道怎么转换???? ) if (MessageBox.Show("确定删除此节点及其信息?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Waring)==DialogaResult.Yes)
{
sqlConnection con = new ...;
con.Open();
sqlCommand cmd = newSqlCommand ("delet from nodeinfo where modelId='"+m.tostring()+"'and nodeId = '"+jdName+"'",con);
cmd.Connection = con;
con.Close();
MessageBox.Show("删除成功");
} // 问题三: 这段代码能实现在数据库删除相应的信息吗??怎样该会更好呢?????????????????????
}
if (MessageBox.Show("确定删除此节点及其信息?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Waring)==DialogaResult.Yes)
{
sqlConnection con = new ...;
con.Open();
sqlCommand cmd = newSqlCommand ("delet from nodeinfo where modelId='"+m.tostring()+"'and nodeId = '"+jdName+"'",con); //如果NodeID不好获取,如果NodeName也是唯一的
//那么nodeName='"+jdName+"'",con也行
cmd.Connection = con;
cmd.ExecuteNoQuery();//这行删除
con.Close();
MessageBox.Show("删除成功");
这里我们先定义form2中的这个节点的信息所在的id,然后我们定义一个函数,例如:public bool ModifyTable(int id, string....)
{
string sql = "update modelinfo set(" + "modelName,....) values(" + ... + ") where modelId=" + id;
sqlConnection con = new ...;
con.Open();
sqlCommand cmd =new sqlCommand(conn,sql);
cmd.ExecuteNonQuery();//执行修改命令,返回的结果大于0则表示成功
}
类似,可以写两个这样的函数进行修改操作。