Asp.net 1.1: проблема с динамическом кол-вом колонок в Datagrid

  • Автор темы Tygrys
  • Дата начала
Статус
Закрыто для дальнейших ответов.
T

Tygrys

#1
При программировании под asp.net 1.1 возникла такая проблема:

в базу данных посылается запрос, на основе которого определяется кол-во столбцов в датагриде:
есть один фиксированный столбецс текстом+должно быть n динамических столбцов в ячейках которых должны быть textbox
Rows данного DataGrid также заполняется динамически.
На страничке есть кнопочка по нажатии на которую:
1)должны браться данные из датагрида
2)происходит Response.Redirect на на следующую страницу

Теперь описание проблемы:
DataGrid создается нормально, но при при нажатие на кнопку не могу подцепить данные из DataGrid...

как можно решить?

Код:

Код:
namespace ccam.Pages
{
using System;
using System.Data;
using System.Collections;
using System.Drawing;
using System.Web;
using System.Web.UI;

using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using libs;


public class page4 : System.Web.UI.UserControl
{

protected System.Web.UI.WebControls.Button NextPageBtn;
protected System.Web.UI.WebControls.Button PrevPageBtn;
protected System.Web.UI.WebControls.DataGrid DTable;
StruTemp CurrentStructure;
int ColCount;
protected System.Web.UI.HtmlControls.HtmlTableCell TD1;
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.Button Button2;
protected System.Web.UI.WebControls.PlaceHolder Holder;
protected System.Web.UI.WebControls.Label Label1;

private string SqlRequest
{
}

private string ConnectionString
{

}
System.Data.DataSet DS;
private DataTable DTRoles
{
}







private void Page_Load(object sender, System.EventArgs e)
{

if (!(IsPostBack))
{

this.FillGrid();
}



}





#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{

this.GetData();
this.CreateGrid();

InitializeComponent();
base.OnInit(e);


}


private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);

}





private void GetData()
{

}

private void CreateGrid()
{
//Grid properties
this.DTable.ID="PageTable";
this.DTable.AutoGenerateColumns=false;
this.DTable.AllowPaging=false;
this.DTable.ShowFooter=false;
this.DTable.ShowHeader=true;
//create columns
DataGridColumn ColumnFirst=CreateColumn("Column",1);			
DTable.Columns.Add((ColumnFirst));
for (int i=0;i<(int)(Session["DTRoles.Rows.Count"]);i++)
{
DataGridColumn Column=CreateColumn((string)Session["HeaderText"+i]+i,2);
DTable.Columns.Add(Column);
}

}

private DataGridColumn CreateColumn(string ColumnsHeaderText,int Code)
{
TemplateColumn column = new TemplateColumn();
column.HeaderTemplate = new RoleHeaderTemplate(ColumnsHeaderText,ColumnsHeaderText);
column.HeaderText=ColumnsHeaderText;
column.ItemTemplate = new RoleItemTemplate(ColumnsHeaderText,Code);
return column;
}
private void FillGrid()
{
DTable.DataSource=this.CreateDataSource();
DTable.DataBind();
}
ICollection CreateDataSource()
{
DataRow dr;
TableCell c;
Label NewLabel;

DataTable GridDataTable=new DataTable("DataGrid");
DataColumn ColumnFirst=new DataColumn("Учереждения");
GridDataTable.Columns.Add((ColumnFirst));
for (int i=0;i<(int)(Session["DTRoles.Rows.Count"]);i++)
{
DataColumn Column=new DataColumn((string)Session["HeaderText"+i]+i);

GridDataTable.Columns.Add(Column);
}
for (int i=0; i<this.CurrentStructure.InstitutionCount; i++) 
{		 

dr = GridDataTable.NewRow();

c = new TableCell();

NewLabel=new Label();
NewLabel.Text=CurrentStructure.Institution[i];
NewLabel.ID="Lbl"+CurrentStructure.Institution[i];

c.Controls.Add(NewLabel);
dr[0]=NewLabel.Text;

GridDataTable.Rows.Add(dr);
}




DataView dv = new DataView(GridDataTable);
return dv;


}

private void DTable_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType != ListItemType.Header && e.Item.ItemType != ListItemType.Footer)
{


e.Item.Cells[0].Text=CurrentStructure.Institution[e.Item.ItemIndex];
}


}

}


public class RoleHeaderTemplate
: ITemplate
{
string HeaderID;
string HeaderText;


public RoleHeaderTemplate(string HeaderID, string HeaderText)
{
this.HeaderID=HeaderID;
this.HeaderText=HeaderText;
}

public void InstantiateIn(Control container)
{
Label lbl = new Label();
lbl.ID=this.HeaderID;
lbl.DataBinding+=new EventHandler(lbl_DataBinding);
container.Controls.Add(lbl);
}
private void lbl_DataBinding(object sender, EventArgs e)
{
Label lbl = (Label)sender;
lbl.ID=this.HeaderID;
lbl.Text=this.HeaderText;
}
}

public class RoleItemTemplate
: ITemplate
{

public RoleItemTemplate(string ColumnsHeaderText, int Code)
{
this.ColumnID=ColumnsHeaderText;
this.Code=Code;

}

public void InstantiateIn(Control container)
{
if (this.Code==1)
{
Label InstName=new Label();
InstName.ID="Lbl"+this.ColumnID;
container.Controls.Add(InstName);

}
else if (this.Code==2)
{
TextBox max = new TextBox();
TextBox min = new TextBox();

max.ID = "max" + this.ColumnID;
min.ID = "min" + this.ColumnID;

container.Controls.Add(max);
container.Controls.Add(min);

}
}
}

}
 
Статус
Закрыто для дальнейших ответов.