1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

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

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

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

    Tygrys Гость

    Репутация:
    0
    При программировании под 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);
    
    }
    }
    }
    
    }
     
Загрузка...
Статус темы:
Закрыта.

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