Athmuri Murali Ответов: 7

Привязка данных к динамическим столбцам gridview.


Уважаемый господин,

Я извлекаю данные из базы данных, и эти данные хранятся в datatable.

и я хочу связать таблицу с данными в динамической сетке колонн в указанные ячейки.

Я стараюсь вот так.

мы разрабатываем проект 3-х уровневой архитектуры
dk = tbal.retriveheaderdata(clas, sec, k1, tim1);

for (int hj = 0; hj < dk.Rows.Count; hj++)
{
    TableCell tc = new TableCell();
    Label ll = new Label();
    ll.ID = f + hj.ToString();
    tc.Controls.Add(ll);
    tc.Text = dk.Rows[hj].ToString();


    GridView2.Rows[hj].Cells.Add(tc);


}

7 Ответов

Рейтинг:
45

Vinodh.B

Следующая ссылка может помочь .

http://makhaai.blogspot.in/2010/05/add-gridview-column-dynamically-aspnet.html[^]


Рейтинг:
39

Athmuri Murali

Сэр,
Пожалуйста, проверьте мой код. Пожалуйста, оформите заказ по адресу " tc.Text = dt.Rows[hj].Метод toString();";

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class Edittime : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        DataTable dt1 = new DataTable();
        timetbal obj = new timetbal();
        if (!IsPostBack)
        {
            dt1 = obj.class1();
            for (int i = 0; i < dt1.Rows.Count; i++)
            {
                DataRow dr = dt1.Rows[i];
                DropDownList1.Items.Add(dr[0].ToString());
            }
        }
    }

    string clas;
    string sec;
    ArrayList jk = new ArrayList();
    string f = "murali";
    string tim1;
    DataTable dk = new DataTable();
    BoundField bField = new BoundField();
    BoundField bField1 = new BoundField();
    BoundField bField2 = new BoundField();
    BoundField bField3 = new BoundField();
    static TimeSpan t3;
    static TimeSpan t4;
    static TimeSpan n6;
    static TimeSpan n8;
    string k1;
    protected void Button1_Click(object sender, EventArgs e)
    {
        timetbal tbal = new timetbal();
        DataTable dt = new DataTable();
        string class1 = DropDownList1.SelectedItem.ToString();
        string[] k = class1.Split('-');
        clas = k[0].ToString();
        sec = k[1].ToString();
        dt = tbal.retrivevalues(clas, sec);
        string start_time = dt.Rows[0][0].ToString();
        string period_time = dt.Rows[0][1].ToString();
        string no_period = dt.Rows[0][2].ToString();
        string break_time = dt.Rows[0][3].ToString();
        string lunch_time = dt.Rows[0][4].ToString();



        //Header Text Values

        GridView2.Width = 1500;
        int n = Convert.ToInt32(no_period);
        for (int i = 0; i < n; i++)
        {
            if (i == 0)
            {
                TimeSpan t1 = System.TimeSpan.Parse(start_time);
                TimeSpan t2 = System.TimeSpan.Parse(period_time);
                t3 = t1.Add(t2);
                string h = Convert.ToString(t1) + "-" + Convert.ToString(t3);
                GridView2.Visible = true;
                bField.HeaderText = h.ToString();
                GridView2.Columns.Add(bField);

            }
            else if (i < 2)
            {
                TimeSpan t1 = t3;
                TimeSpan t2 = System.TimeSpan.Parse(period_time);
                t3 = t1.Add(t2);
                Label6.Text = Convert.ToString(t1) + "-" + Convert.ToString(t3);
                GridView2.Visible = true;
                BoundField bField = new BoundField();
                bField.HeaderText = Label6.Text;
                GridView2.Columns.Add(bField);
            }
            else if (i == 2)
            {
                TimeSpan n1 = System.TimeSpan.Parse(break_time);
                t4 = t3.Add(n1);
                string k1 = Convert.ToString(t3) + "-" + Convert.ToString(t4);
                Label lbl = new Label();
                lbl.Text = k1.ToString();
                bField1.HeaderText = lbl.Text;
                GridView2.Columns.Add(bField1);
            }
            else if (i > 2 && i < 5)
            {
                TimeSpan t1 = t4;
                TimeSpan t2 = System.TimeSpan.Parse(period_time);
                t4 = t1.Add(t2);
                Label6.Text = Convert.ToString(t1) + "-" + Convert.ToString(t4);
                GridView2.Visible = true;
                BoundField bField = new BoundField();
                bField.HeaderText = Label6.Text;
                GridView2.Columns.Add(bField);
            }


            else if (i == 5)
            {
                TimeSpan n5 = System.TimeSpan.Parse(lunch_time);
                n6 = t4.Add(n5);
                string f = Convert.ToString(t4) + "-" + Convert.ToString(n6);
                Label lbl1 = new Label();
                lbl1.Text = f.ToString();
                bField2.HeaderText = lbl1.Text;
                GridView2.Columns.Add(bField2);
            }
            else if (i > 5 && i < 8)
            {
                TimeSpan t1 = n6;
                TimeSpan t2 = System.TimeSpan.Parse(period_time);
                n6 = t1.Add(t2);
                Label6.Text = Convert.ToString(t1) + "-" + Convert.ToString(n6);
                GridView2.Visible = true;
                BoundField bField = new BoundField();
                bField.HeaderText = Label6.Text;
                GridView2.Columns.Add(bField);
            }

            else if (i == 8)
            {
                TimeSpan n7 = System.TimeSpan.Parse(break_time);
                n8 = n6.Add(n7);
                string q = Convert.ToString(n6) + "-" + Convert.ToString(n8);

                bField3.HeaderText = q.ToString();
                GridView2.Columns.Add(bField3);

            }
            else
            {
                TimeSpan t11 = n8;
                TimeSpan t2 = System.TimeSpan.Parse(period_time);
                n8 = t11.Add(t2);
                string aa = Convert.ToString(t11) + "-" + Convert.ToString(n8);
                GridView2.Visible = true;
                BoundField bField = new BoundField();
                bField.HeaderText = aa.ToString();
                GridView2.Columns.Add(bField);
            }
        }
        GridView2.DataBind();

        for (int j = 1; j < GridView2.Columns.Count; j++)
        {
            tim1 = GridView2.Columns[j].HeaderText;
            dt = tbal.retriveheader(clas, sec, tim1);
           
            GridView2.DataSource = dt;
            GridView2.DataBind();
            k1 = dt.Rows[0][1].ToString();
          
            
            //dk = tbal.retriveheaderdata(clas, sec, k1, tim1);
            //for (int hj = 0; hj < dk.Rows.Count; hj++)
            //{
            //    DataRow dr = dk.Rows[hj];
            //    dk.Rows.Add(dr[0].ToString());
            //    //GridView2.DataSource = dk;
            //    // GridView2.DataBind();
            //}


            dk = tbal.retriveheaderdata(clas, sec, k1, tim1);
            for (int hj = 0; hj < dk.Rows.Count; hj++)
            {
                TableCell tc = new TableCell();
                Label ll = new Label();
                ll.ID = f + hj.ToString();
                tc.Controls.Add(ll);
                tc.Text = dt.Rows[hj].ToString();

                GridView2.Rows[hj].Cells.Add(tc);

            }



        }
    }
}


Рейтинг:
2

AshishChaudha

Попробуйте этот пример

Динамическое добавление и удаление строк из ASP.NET GridView[^]

Спасибо


Рейтинг:
2

akash dhonde

https://www.aspsnippets.com/Articles/Dynamically-create-DataTable-and-bind-to-GridView-in-ASPNet.aspx

Попробовать это


Richard Deeming

ПЯТЬ С ПОЛОВИНОЙ ЛЕТ НАЗАД слишком поздно.

Рейтинг:
1

Athmuri Murali

сэр,

Я использовал rowindex для объединения ячеек gridview.Я получил вывод о своем требовании, но моя проблема заключается в том, что я хочу редактировать данные в ячейках gridview.


Я использую rowcommand, я получил значение из 0-й строки. Но остальные значения получают нулевые значения. Поэтому, пожалуйста, попытайтесь решить мою проблему.
это мой код проверьте его один раз решите мою проблему

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {

            timetbal tbal = new timetbal();
            DataTable dk = new DataTable();

            dk = tbal.viewcount();

            int h = Convert.ToInt32(dk.Rows[0][1].ToString());

            if (e.Row.RowIndex == j)
            {
                e.Row.Cells[0].RowSpan = h;
                j = j + h;
            }
            else if (e.Row.RowIndex == j)
                e.Row.Cells[0].RowSpan = h;
            else
            {
                e.Row.Cells.Remove(e.Row.Cells[0]);
            }
        }
    }
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
       
        if (e.CommandName == "abc")
        {
            string s = e.CommandArgument.ToString();
            Session["murali"] = s.ToString();
            Response.Redirect("updatedata.aspx");
        }
    }


Jibesh

Пожалуйста, не используйте поле решения для публикации своих комментариев. используйте виджет "есть вопрос или комментарий", чтобы опубликовать свои комментарии, чтобы автор получил уведомление и мог ответить на ваш запрос. Если вы опубликуете его как решение, автор может упустить этот и редкий шанс снова просмотреть ваш запрос.

Кроме того, если вы хотите отредактировать свой вопрос, используйте ссылку "улучшить вопрос", чтобы изменить свой вопрос

Рейтинг:
0

Athmuri Murali

Сэр ,

Я не хочу добавлять строки с помощью gridview.
Я хочу привязать данные к динамической ячейке gridview.
Посмотри на мой экран .

Я хочу привязать данные по адресу "06:00:00-07:00:00" в указанной ячейке, но она добавлена за пределы gridview.

Даже я удаляю автогенерируемые столбцы из gridview, поскольку получаю вывод, как показано ниже.



Неделя 06:00:00-07:00:00 07:00:00-08:00:00 08:00:00-08:10:00 System.Data.DataRow
Пятница
Понедельник
Суббота
Воскресенье
Четверг
Вторник
Среда


Рейтинг:
0

JIYAUL MUSTAPHA

Этот код используется для привязки динамической сетки выбранной записи к сетке

private void BindDynaicGrd()
    {
        //instance of a datatable
        DataTable dt = new DataTable();
        //instance of a datarow
        DataRow drow;
        //creating two datacolums dc1 and dc2 
        DataColumn dc1 = new DataColumn("Code", typeof(string));
        DataColumn dc2 = new DataColumn("Name", typeof(string));
        //adding datacolumn to datatable
        dt.Columns.Add(dc1);
        dt.Columns.Add(dc2);
       
        if (grd.Rows.Count > 0)
        {
            foreach (GridViewRow gvr in grdSites.Rows)
            {
               
                CheckBox chk_Single = (CheckBox)gvr.FindControl("chkSingle");
                if (chk_Single.Checked == true)
                {
                    Label lbl_Code = (Label)gvr.FindControl("lblCode");
                    Label lbl_Name = (Label)gvr.FindControl("lblName");
                    //instance of a datarow
                    drow = dt.NewRow();
                    //add rows to datatable
                    //add Column values
                    drow = dt.NewRow();
                    drow["Code"] = lbl_SiteCode.Text;
                    drow["Name"] = lbl_SiteName.Text.ToString();
                    dt.Rows.Add(drow);
                }
            }
        }
        //set gridView Datasource as dataTable dt.
        gridcl.DataSource = dt;
        //Bind Datasource to gridview
        gridcl.DataBind();
    }


CHill60

2 дня назад я опубликовал комментарий против одного из ваших решений ... "Я изо всех сил пытаюсь понять, почему ваше решение лучше, чем принятое решение... возможно, если вы добавите(Эд) несколько слов, чтобы объяснить код, это поможет?"
Просто демпинг кода против решенных вопросов, скорее всего, привлечет downvotes и отчеты ... вы можете использовать ссылку "улучшить решение", чтобы добавить некоторые пояснения к вашему решению(решениям)

Richard Deeming

ПЯТЬ С ПОЛОВИНОЙ ЛЕТ НАЗАД слишком поздно.