我的野蛮代码
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace ProjectAdmin
{
/// <summary>
/// WebForm4 的摘要说明。
/// </summary>
public class WebForm4 : System.Web.UI.Page
{
protected Microsoft.Web.UI.WebControls.TreeView
TreeView1;
protected System.Data.DataSet ds;
protected System.Data.SqlClient.SqlDataAdapter da;
protected System.Web.UI.WebControls.DataGrid
DataGrid1;
protected System.Web.UI.WebControls.Button delbtn;
protected System.Data.SqlClient.SqlConnection
sqlconn;
protected System.Data.SqlClient.SqlDataAdapter
nextda;
protected System.Data.SqlClient.SqlDataAdapter
myCommand;
protected System.Data.SqlClient.SqlCommand
DeleteCommand;
private void Page_Load(object sender,
System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
BindGrid();
}
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计
器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.sqlconn = new
System.Data.SqlClient.SqlConnection();
this.TreeView1.SelectedIndexChange += new
Microsoft.Web.UI.WebControls.SelectEventHandler(this.TreeView1_Sel
ectedIndexChange);
this.delbtn.Click += new
System.EventHandler(this.delbtn_Click);
//
// sqlconn
//
this.sqlconn.ConnectionString = "data
source=PCLXM;initial catalog=KcyAdminData;integrated
security=SSPI;persist s" +
"ecurity info=False;user
id=sa;workstation id=PCLXM;packet size=4096";
this.Load += new
System.EventHandler(this.Page_Load);
}
#endregion
private void delbtn_Click(object sender,
System.EventArgs e)
{
CheckBox SelectItem;
nextda = new
System.Data.SqlClient.SqlDataAdapter();
nextda.DeleteCommand = new
System.Data.SqlClient.SqlCommand("DELETE FROM dengji WHERE 工程编
号 = @gcbh1",sqlconn);
nextda.DeleteCommand.Parameters.Add("@gcbh1",SqlDbType.VarChar,80,
"工程编号");
DataGrid1.DataKeyField="工程编号";
for(int i=0;i<DataGrid1.Items.Count;i++)
{
SelectItem =
(CheckBox)DataGrid1.Items[i].FindControl("SelectBox");
if(SelectItem.Checked)
{
nextda.DeleteCommand.Parameters["@gcbh1"].Value =
DataGrid1.DataKeys[(int)DataGrid1.Items[i].ItemIndex];
sqlconn.Open();
nextda.DeleteCommand.ExecuteNonQuery();
sqlconn.Close();
BindGrid();
}
}
}
public void BindGrid()
{
string lll =
TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex).Text;
myCommand = new
System.Data.SqlClient.SqlDataAdapter("SELECT 工程编号,登记日期,工
程级别,建设单位,工程地点,联系人,工程负责人,任务去向 FROM dengji
WHERE 工程编号 = @gcbh",sqlconn);
myCommand.SelectCommand.Parameters.Add("@gcbh",SqlDbType.VarChar,8
0,"工程编号");
myCommand.SelectCommand.Parameters["@gcbh"].Value = lll;
DataSet ds = new DataSet();
sqlconn.Open();
myCommand.Fill(ds);
DataGrid1.DataSource=ds;
DataGrid1.DataBind();
sqlconn.Close();
}
private void TreeView1_SelectedIndexChange(object
sender, Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
{
//BindGrid();
string llll =
TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex).Text;
da = new
System.Data.SqlClient.SqlDataAdapter("SELECT 工程编号,登记日期,工
程级别,建设单位,工程地点,联系人,工程负责人,任务去向 FROM dengji
WHERE 任务去向 = @gcbh",sqlconn);
da.SelectCommand.Parameters.Add("@gcbh",SqlDbType.VarChar,80,"任务
去向");
da.SelectCommand.Parameters["@gcbh"].Value
= llll;
DataSet ds = new DataSet();
sqlconn.Open();
da.Fill(ds,"dengji");
DataGrid1.DataSource=ds.Tables["dengji"];
DataGrid1.DataKeyField = "工程编号";
DataGrid1.DataBind();
sqlconn.Close();
}
treeview1节点的text对应数据库的"任务去向"这个字段。按纽 delbtn 的
事件负责删除所选择的一条或多条记录,他是datagrid1之外的一个控件。
datagrid1里绑定了一个CheckBox的模板列,通过他选择一条或多条记录。
所出现的问题是:
1: 运行程序后,treeview1默认的已选择节点为:信息中心。可是 任
务去向 = “信息中心”的数据记录却并没有绑定到datagrid1里去
datagrid1里并没有显示任何数据,而 任务去向 = “信息中心”
的数据纪录是存在的。
2: 当我选择一条纪录或多条纪录并单击delbtn后,页面提交后
datagrid不显示任何数据。而我想得到的却是:删除了所选纪录后,
datagrid1还要显示删除之后的所有纪录。到数据库里去察看。不
论我选择的是一条还是多条纪录,删除的总是所选纪录中位置最下
的一条纪录,这是为什么?
3: 如果private void TreeView1_SelectedIndexChange()函数里调用
函数BindGrid(),并将函数里其他的代码删除,则无论选择那个节点
datagrid1里总是显示为空,这是为什么?
拜托各位了。