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

Тема в разделе ".NET", создана пользователем Tygrys, 18 янв 2007.

Статус темы:
Закрыта.
  1. Tygrys

    Tygrys Гость

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

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

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

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

    Код:

    Код (Text):
    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);

    }
    }
    }

    }
     
Загрузка...
Похожие Темы - Asp net проблема
  1. vovanche
    Ответов:
    0
    Просмотров:
    337
  2. acs-nexus
    Ответов:
    0
    Просмотров:
    308
  3. Bizapps
    Ответов:
    0
    Просмотров:
    254
  4. slavkan777
    Ответов:
    0
    Просмотров:
    444
  5. acs-nexus
    Ответов:
    0
    Просмотров:
    410
Статус темы:
Закрыта.

Поделиться этой страницей