using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Configuration; namespace CSharpDemoHierGrid { /// <summary> /// Summary description for WebForm1. /// </summary> public class WebForm1 : System.Web.UI.Page { DataTable t; String conStr; DataSet ds = new DataSet(); DataSet DsMain = new DataSet(); String Space; protected System.Web.UI.WebControls.DataGrid DataGrid1;
conStr = ConfigurationSettings.AppSettings["connectionstring"]; t = new DataTable("Total_List"); DsMain.Tables.Add(t); DataColumn c1 = new DataColumn("任务编号", Type.GetType("System.String"),"");
DataColumn c2 = new DataColumn("任务名称", Type.GetType("System.String"),"");
DataColumn c3 = new DataColumn("计划开始时间", Type.GetType("System.String"),"");
DataColumn c4 = new DataColumn("计划结束时间", Type.GetType("System.String"),""); DataColumn c5 = new DataColumn("实际开始时间", Type.GetType("System.String"),""); DataColumn c6 = new DataColumn("实际结束时间", Type.GetType("System.String"),""); DataColumn c7 = new DataColumn("前置任务", Type.GetType("System.String"),""); t.Columns.Add(c1); t.Columns.Add(c2); t.Columns.Add(c3); t.Columns.Add(c4); t.Columns.Add(c5); t.Columns.Add(c6); t.Columns.Add(c7);
LoadResults(0); DataGrid1.DataSource = DsMain.Tables[0]; DataGrid1.DataBind(); DataGrid1.Columns[1].Visible = false; for(int i = 1 ; i <DsMain.Tables[0].Rows.Count; i++) DataGrid1.Items[i].Visible = false;
} } int ParentID = 0; private void LoadResults(int inParentID) { SqlConnection con = new SqlConnection(conStr); if (inParentID == 0) {
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM timeplan Where ParentID is null", con); con.Open(); da.Fill(ds, "Search_List" + inParentID);
con.Close(); } else {
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM timeplan Where ParentID = " + inParentID, con); con.Open(); da.Fill(ds, "Search_List" + inParentID);
} } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); base.OnInit(e); }
/// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.DataGrid1.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_ItemCommand); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) {
1、嵌套的DataGrid如何为子DataGrid动态增加模板列
http://www.cnblogs.com/lovecherry/archive/2005/04/26/145633.html
2、Ben大哥的,利用XMLHTTP做的TreeGrid
http://e65.sogot.com/TreeGrid/default.aspx
{
TextBox lbltau_id =new TextBox();//在模板列中的textbox
id=(TextBox)e.Item.FindControl("id");
if (id != null)
{
strColumn = id.Text;
string SqlStr="select * from youtabel where id='"+id+"'";
SqlDataAdapter cmd=new SqlDataAdapter(SqlStr,conn.dbconn);
DataSet myds=new DataSet();
cmd.Fill(myds,"mytable");
DataGrid2.DataSource=myds.Table[0].DefaultView;
DataGrid2.DataBind();
}
}
<asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False" PageSize="2" AllowPaging="True">
<Columns>
<asp:TemplateColumn HeaderText="表头">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "id") %>
<asp:DataGrid id="DataGrid2" runat="server" AutoGenerateColumns="false"></asp:DataGrid>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
to:LoveCherry:Ben大哥的利用XMLHTTP做的TreeGrid,我要的就是这个效果!不知可否提供一下源码?
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Configuration;
namespace CSharpDemoHierGrid
{
/// <summary>
/// Summary description for WebForm1.
/// </summary>
public class WebForm1 : System.Web.UI.Page
{ DataTable t;
String conStr;
DataSet ds = new DataSet();
DataSet DsMain = new DataSet();
String Space; protected System.Web.UI.WebControls.DataGrid DataGrid1;
private void Page_Load(object sender, System.EventArgs e)
{
if(! IsPostBack)
{
conStr = ConfigurationSettings.AppSettings["connectionstring"];
t = new DataTable("Total_List");
DsMain.Tables.Add(t);
DataColumn c1 = new DataColumn("任务编号", Type.GetType("System.String"),"");
DataColumn c2 = new DataColumn("任务名称", Type.GetType("System.String"),"");
DataColumn c3 = new DataColumn("计划开始时间", Type.GetType("System.String"),"");
DataColumn c4 = new DataColumn("计划结束时间", Type.GetType("System.String"),""); DataColumn c5 = new DataColumn("实际开始时间", Type.GetType("System.String"),""); DataColumn c6 = new DataColumn("实际结束时间", Type.GetType("System.String"),""); DataColumn c7 = new DataColumn("前置任务", Type.GetType("System.String"),"");
t.Columns.Add(c1);
t.Columns.Add(c2);
t.Columns.Add(c3);
t.Columns.Add(c4);
t.Columns.Add(c5);
t.Columns.Add(c6);
t.Columns.Add(c7);
LoadResults(0);
DataGrid1.DataSource = DsMain.Tables[0];
DataGrid1.DataBind();
DataGrid1.Columns[1].Visible = false;
for(int i = 1 ; i <DsMain.Tables[0].Rows.Count; i++)
DataGrid1.Items[i].Visible = false;
}
}
int ParentID = 0;
private void LoadResults(int inParentID)
{
SqlConnection con = new SqlConnection(conStr); if (inParentID == 0)
{
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM timeplan Where ParentID is null", con);
con.Open();
da.Fill(ds, "Search_List" + inParentID);
con.Close();
}
else
{
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM timeplan Where ParentID = " + inParentID, con);
con.Open();
da.Fill(ds, "Search_List" + inParentID);
con.Close();
}
DataTable ParentTable;
ParentTable = ds.Tables["Search_List" + inParentID];
foreach(DataRow parentrow in ParentTable.Rows)
{
DataRow newRow;
newRow=t.NewRow(); String ID = Convert.ToString( parentrow.ItemArray[0] );
newRow["任务编号"]= ID;
String Name = String.Concat(Space , Convert.ToString( parentrow.ItemArray[1] ));
newRow["任务名称"]=(string)Name;
string Pstarttime= (Convert.ToDateTime(parentrow.ItemArray[2])).ToString( "yy年MM月dd日");
newRow["计划开始时间"]= Pstarttime; String Pendtime = (Convert.ToDateTime( parentrow.ItemArray[3] )).ToString( "yy年MM月dd日");
newRow["计划结束时间"]= Pendtime; if(Convert.ToString( parentrow.ItemArray[4] )=="")
{
newRow["实际开始时间"]="";
}
else
{
String Astarttime =( Convert.ToDateTime( parentrow.ItemArray[4] )).ToString( "yy年MM月dd日");
newRow["实际开始时间"]= Astarttime;
} if(Convert.ToString( parentrow.ItemArray[5] )=="")
{
newRow["实际结束时间"]="";
}
else
{ String Aendttime = (Convert.ToDateTime( parentrow.ItemArray[5] )).ToString( "yy年MM月dd日");
newRow["实际结束时间"]= Aendttime;
} if (inParentID == 0)
{
newRow["前置任务"]= (string)ParentID.ToString();
}
else
{
ParentID = Convert.ToInt32( parentrow.ItemArray[6] );
newRow["前置任务"]= (string)ParentID.ToString();
} t.Rows.Add(newRow); Space = Space + " ";
LoadResults( Convert.ToInt32( parentrow.ItemArray[0]));
if (Space.Length - 18 >= 18)
Space = Space.Remove(Space.Length - 18, 18);
} } #region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.DataGrid1.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_ItemCommand);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if( ((Button)(e.Item.Cells[0].Controls[0])).Text == "+")
{
int Root = Convert.ToInt32(DataGrid1.Items[e.Item.ItemIndex].Cells[1].Text);
for( int i = 1 ;i< DataGrid1.Items.Count - 1;i++)
{
if (DataGrid1.Items[i].Cells[7].Text == Root.ToString())
DataGrid1.Items[i].Visible = true;
}
((Button)(e.Item.Cells[0].Controls[0])).Text = "-";
}
else
{
int Root = Convert.ToInt32(DataGrid1.Items[e.Item.ItemIndex].Cells[1].Text);
ArrayList ArrC = new ArrayList();
ArrC.Add(Root);
do
{
for(int i = 1 ;i< DataGrid1.Items.Count - 1;i++)
{
if (DataGrid1.Items[i].Cells[7].Text == ArrC[0].ToString())
{
ArrC.Add(DataGrid1.Items[i].Cells[1].Text);
DataGrid1.Items[i].Visible = false;
((Button)(DataGrid1.Items[i].Cells[0].Controls[0])).Text = "+";
}
}
ArrC.Remove(ArrC[0]);
}while (ArrC.Count > 0);
((Button)(e.Item.Cells[0].Controls[0])).Text = "+";
}
}
}
}