This is a migrated thread and some comments may be shown as answers.

[Solved] Need to get the values from the Text box's dynamically created in RadGrid

12 Answers 685 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Anto (DLL Version : 2008.3.1314.35)
Top achievements
Rank 2
Anto (DLL Version : 2008.3.1314.35) asked on 05 Jul 2013, 09:34 AM
Hi All,

Have a RadGrid in aspx page. Have dynamically created GridTemplateColumn with Textboxes inside.

Works fine. I am able to enter values in the Textbox.

Here is the aspx coding.
<telerik:RadGrid ID="RadGridText" runat="server" Skin="Vista" AutoGenerateColumns="false"
                    OnItemDataBound="RadGridText_ItemDataBound" OnNeedDataSource="RadGridText_NeedDataSource"
                    OnPreRender="RadGridText_PreRender" Height="250px" Width="1000px">
                    <MasterTableView HeaderStyle-CssClass="disable-highlight" Width="98%" HeaderStyle-HorizontalAlign="Center"
                        HeaderStyle-Wrap="true">
                        <Columns>
                         
                        </Columns>
                    </MasterTableView>
                    <ClientSettings Scrolling-AllowScroll="true" Resizing-AllowColumnResize="true" Scrolling-SaveScrollPosition="true"
                        Scrolling-FrozenColumnsCount="2" Scrolling-UseStaticHeaders="true">
                        <Selecting AllowRowSelect="true" />                      
                        <Scrolling AllowScroll="true" UseStaticHeaders="true" />
                    </ClientSettings>
                </telerik:RadGrid>

Here is the .cs coding
public void LoadGridText()
        {
            dt1 = GetData();
            dtnewd = dt1.Tables[0].Clone();
            //
            for (int x = 2; x < dtnewd.Columns.Count - 4; x++)
            {
                dtnewd.Columns[x].DataType = typeof(bool);
            }
 
            for (int c = 0; c < dt1.Tables[0].Rows.Count; c++)
            {
                for (int d = 2; d < dt1.Tables[0].Columns.Count - 4; d++)
                {
                    dt1.Tables[0].Rows[c][d] = dt1.Tables[0].Rows[c][d].ToString() == "1" ? true : false;// Convert.ToBoolean(dt1.Tables[0].Rows[c][d]);
                }
            }
 
            foreach (DataRow dr in dt1.Tables[0].Rows)
            {                
                dtnewd.ImportRow(dr);
            }
 
 
            if (dt != null && dtnewd.Rows.Count > 0)
            {
                for (Int32 m = 0; m < dtnewd.Rows.Count; m++)
                {
                    columnsum += Convert.ToDecimal(dtnewd.Rows[m]["MININVESTMENT"]);
 
                }
 
                txtMinInvestment.Text = columnsum.ToString();
                txtBudget.Text = (Convert.ToDouble(columnsum) * 10).ToString();
 
            }
 
            GridBoundColumn objBoundMKTID = new GridBoundColumn();
            objBoundMKTID.HeaderText = dtnewd.Columns[0].ToString().ToString();
 
            objBoundMKTID.UniqueName = dtnewd.Columns[0].ToString().ToString();
            objBoundMKTID.DataType = typeof(Int32);
            objBoundMKTID.DataField = dtnewd.Columns[0].ToString();
            RadGridText.MasterTableView.Columns.Add(objBoundMKTID);
            objBoundMKTID.Display = false;
 
 
            GridBoundColumn objBound = new GridBoundColumn();
            objBound.HeaderText = dtnewd.Columns[1].ToString().ToString();
            objBound.UniqueName = dtnewd.Columns[1].ToString().ToString();
            objBound.DataType = typeof(string);
            objBound.DataField = dtnewd.Columns[1].ToString();
            objBound.HeaderStyle.Width = 100;
            objBound.HeaderStyle.Wrap = true;
            objBound.ItemStyle.Width = 100;
            objBound.ItemStyle.Wrap = true;
            RadGridText.MasterTableView.Columns.Add(objBound);
 
            for (int z = 2; z < dtnewd.Columns.Count - 4; z++)
            {
                GridTemplateColumn objGridTemp = new GridTemplateColumn();
                objGridTemp.HeaderText = dtnewd.Columns[z].ToString().ToString();
                objGridTemp.UniqueName = dtnewd.Columns[z].ToString().ToString();
                //objBound.DataType = typeof(string);
                objGridTemp.DataField = dtnewd.Columns[z].ToString();
                objGridTemp.HeaderStyle.Width = 100;
                objGridTemp.HeaderStyle.Wrap = true;
                objGridTemp.ItemStyle.Width = 100;
                objGridTemp.ItemStyle.Wrap = true;              
 
                objGridTemp.ItemTemplate = new MyTemplate(dtnewd.Columns[z].ToString());
 
                RadGridText.MasterTableView.Columns.Add(objGridTemp);
            }
           
 
            GridBoundColumn objBoundcol3 = new GridBoundColumn();
            objBoundcol3.HeaderText = "MININVESTMENT";
            objBoundcol3.UniqueName = "MININVESTMENT";
            objBoundcol3.DataType = typeof(string);
            objBoundcol3.DataField = "MININVESTMENT";
            objBoundcol3.HeaderStyle.Width = 100;
            objBoundcol3.HeaderStyle.Wrap = true;
            objBoundcol3.ItemStyle.Width = 100;
            objBoundcol3.ItemStyle.Wrap = true;
            objBoundcol3.Visible = false;
            RadGridText.MasterTableView.Columns.Add(objBoundcol3);
 
            GridBoundColumn objBoundcol = new GridBoundColumn();
            objBoundcol.HeaderText = "SORTORDER";
            objBoundcol.UniqueName = "SORTORDER";
            objBoundcol.DataType = typeof(string);
            objBoundcol.DataField = "SORTORDER";
            objBoundcol.HeaderStyle.Width = 100;
            objBoundcol.HeaderStyle.Wrap = true;
            objBoundcol.ItemStyle.Width = 100;
            objBoundcol.ItemStyle.Wrap = true;
            objBoundcol.Display = false;
            RadGridText.MasterTableView.Columns.Add(objBoundcol);
 
            GridBoundColumn objBoundcol2 = new GridBoundColumn();
            objBoundcol2.HeaderText = "MKTPRIORITY";
            objBoundcol2.UniqueName = "MKTPRIORITY";
            objBoundcol2.DataType = typeof(Int32);
            objBoundcol2.DataField = "MKTPRIORITY";
            objBoundcol2.HeaderStyle.Width = 100;
            objBoundcol2.HeaderStyle.Wrap = true;
            objBoundcol2.ItemStyle.Width = 100;
            objBoundcol2.ItemStyle.Wrap = true;
            objBoundcol2.Display = false;
            RadGridText.MasterTableView.Columns.Add(objBoundcol2);
        }
 
public class MyTemplate : ITemplate
        {
            protected TextBox boolValue;
            private string colname;
            protected LiteralControl lControl;
 
            public MyTemplate(string cName)
            {
                colname = cName;
            }
 
            public void InstantiateIn(System.Web.UI.Control container)
            {
                boolValue = new TextBox();
                boolValue.ID = colname;
                boolValue.Width = 50;
                container.Controls.Add(boolValue);
            }
            void boolValue_DataBinding(object sender, EventArgs e)
            {
                TextBox cBox = (TextBox)sender;
                GridDataItem container = (GridDataItem)cBox.NamingContainer;
            }          
 
        }

I Need to get the entered values in the Textboxes. Need it as a DataTable when a button is clicked.

protected void btnCalc_Click(object sender, EventArgs e)
       {
           DataTable Dt = new DataTable();
 
           //Need to get the values in the Grid in this DataTable Dt.
 
          
       }


Is there any option to get it.

Thank you.

-Anto

12 Answers, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 09 Jul 2013, 01:03 PM
Hi Anto,

Please try the following code snippet.

C#:
private class MyTemplate : ITemplate 
    {     
        protected TextBox textBox;      
        private string colname;
        public MyTemplate(string cName)
        {
            colname = cName;
        }
        public void InstantiateIn(System.Web.UI.Control container)
        {           
            textBox = new TextBox();
            textBox.ID = "TextBox1";         
            container.Controls.Add(textBox);          
        }      
    }
 
    protected void Button1_Click(object sender, EventArgs e)
    {
        DataTable sampleDataTable = new DataTable();
        sampleDataTable.Columns.Add("FirstColumn", typeof(string));
        DataRow sampleDataRow;
        foreach (GridDataItem item in RadGrid1.MasterTableView.Items)
        {
            sampleDataRow = sampleDataTable.NewRow();
            TextBox txt = (TextBox)item.FindControl("TextBox1");
            string value = txt.Text;
            sampleDataRow["FirstColumn"] = value;
            sampleDataTable.Rows.Add(sampleDataRow);
        }
    }

Thanks,
Princy
0
Anto (DLL Version : 2008.3.1314.35)
Top achievements
Rank 2
answered on 11 Jul 2013, 09:01 AM
Hi,

Displayed the Radgrid with Textboxes.            

Works fine. While entering the values. But not able to get the values from the Textboxes.

Added this code as Princy suggested. But error appeared "Object reference set to null"

Is there any option to get the values in a datatable.

Thanks

-Anto
0
Princy
Top achievements
Rank 2
answered on 11 Jul 2013, 10:23 AM
Hi Anto,

I'm not sure what your requirement is,but here "TextBox1" is the ID of the textbox control,which is a unique id.Usually we set unique names for different controls,else we may get an error.It is better to use different controls with unique names to identify them and make use of them better.
Please elaborate on your requirement,so that i may help.

Thanks,
Princy
0
Anto (DLL Version : 2008.3.1314.35)
Top achievements
Rank 2
answered on 11 Jul 2013, 11:16 AM
Hi,

Displayed the Radgrid with Textboxes.

public class MyTemplate : ITemplate
       {          
           protected TextBox textBox;
           private string colname;
           protected LiteralControl lControl;
 
           public MyTemplate(string cName)
           {
               colname = cName;
           }
 
           public void InstantiateIn(System.Web.UI.Control container)
           {              
               textBox = new TextBox();
               textBox.ID = "TextBox" + Textboxname;
               textBox.Width = 50;
               container.Controls.Add(textBox);
               Textboxname++;
 
           }
           void boolValue_DataBinding(object sender, EventArgs e)
           {
               TextBox cBox = (TextBox)sender;
               GridDataItem container = (GridDataItem)cBox.NamingContainer;
           }         
       }

protected void btnCalc_Click(object sender, EventArgs e)
       {
           DataTable sampleDataTable = new DataTable();
           sampleDataTable.Columns.Add("FirstColumn"typeof(string));
           DataRow sampleDataRow;
           foreach (GridDataItem item in RadGridText.MasterTableView.Items)
           {
               sampleDataRow = sampleDataTable.NewRow();
               TextBox txt = (TextBox)item.FindControl("TextBox1");
               string value = txt.Text;
               sampleDataRow["FirstColumn"] = value;
               sampleDataTable.Rows.Add(sampleDataRow);
           }
 
       }


Works fine. While entering the values. But not able to get the values from the Textboxes.

Added this code as Princy suggested. But error appeared "Object reference set a null"

is there any option to get the values in a datatable.

Thanks

-Anto
0
Princy
Top achievements
Rank 2
answered on 11 Jul 2013, 12:18 PM
Hi Anto,

Below is the full code snippet i tried.Please have a look at it.For the error ,please try setting EnableViewState="false".Let know if any concern.

ASPX:
<telerik:RadGrid ID="RadGrid1" runat="server"  AutoGenerateColumns="false" AllowPaging="true" EnableViewState="false">
    <MasterTableView DataKeyNames="CustomerID">
    </MasterTableView>
</telerik:RadGrid>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />

C#:
protected void Page_Init(object source, System.EventArgs e)
{
    DefineGridStructure();
}
 
private void DefineGridStructure()
{
    GridBoundColumn boundColumn = new GridBoundColumn();
    RadGrid1.MasterTableView.Columns.Add(boundColumn);
    boundColumn.DataField = "CustomerID";
    boundColumn.HeaderText = "CustomerID";
 
    string templateColumnName = "ContactName";
    GridTemplateColumn templateColumn = new GridTemplateColumn();
    templateColumn.ItemTemplate = new MyTemplate(templateColumnName);
    RadGrid1.MasterTableView.Columns.Add(templateColumn);
    templateColumn.HeaderText = templateColumnName;      
}
    
private class MyTemplate : ITemplate 
{     
    protected TextBox textBox;      
    private string colname;
    public MyTemplate(string cName)
    {
        colname = cName;
    }
    public void InstantiateIn(System.Web.UI.Control container)
    {           
        textBox = new TextBox();
        textBox.ID = "TextBox1";         
        container.Controls.Add(textBox);          
    }      
}
 
protected void Button1_Click(object sender, EventArgs e)
{
    DataTable sampleDataTable = new DataTable();
    sampleDataTable.Columns.Add("FirstColumn", typeof(string));
    DataRow sampleDataRow;
    foreach (GridDataItem item in RadGrid1.MasterTableView.Items)
    {
        sampleDataRow = sampleDataTable.NewRow();
        TextBox txt = (TextBox)item.FindControl("TextBox1");
        string value = txt.Text;
        Response.Write(value);
        sampleDataRow["FirstColumn"] = value;
        sampleDataTable.Rows.Add(sampleDataRow);
    }
}
0
Anto (DLL Version : 2008.3.1314.35)
Top achievements
Rank 2
answered on 11 Jul 2013, 01:46 PM
Hi Princy,

Have changed the function as

protected void btnCalc_Click(object sender, EventArgs e)
        {
 DataTable dt = new DataTable();
            int Textboxdynamicname = 1;
            int columncount = 0;
            //For Heading
            foreach (GridColumn column in RadGridText.MasterTableView.Columns)
            {
                if (!string.IsNullOrEmpty(column.UniqueName) && !string.IsNullOrEmpty(column.HeaderText))
                {
                    columncount++;
                    dt.Columns.Add(column.UniqueName, typeof(string));
                }
            }
 
            DataRow dr;
            foreach (GridDataItem item in RadGridText.MasterTableView.Items)
            {
                dr = dt.NewRow();
 
                for (int i = 0; i < columncount; i++)
                {
                    //For leaving First Two columns and Columns after 14
                    if (i < 2 || i > 14)
                    {
                        dr[i] = item[RadGridText.MasterTableView.Columns[i].UniqueName].Text;
                    }
                    else
                    {
                        //TextBox txt = (TextBox)item.FindControl("TextBox" + Textboxdynamicname);
                        TextBox txt = (TextBox)item[dt.Columns[i].ColumnName].FindControl("TextBox" + Textboxdynamicname);
                        string value = txt.Text;
                        dr[i] = value;
                        Textboxdynamicname++;
                    }
                }
 
                dt.Rows.Add(dr);
            }
 
        }

The values other than in Textbox comes. But if it is a Textbox errror appears.

Object reference not set to an instance of an object.

Line 1459:                        //TextBox txt = (TextBox)item.FindControl("TextBox" + Textboxdynamicname);
Line 1460:                        TextBox txt = (TextBox)item[dt.Columns[i].ColumnName].FindControl("TextBox" + Textboxdynamicname);
Line 1461:                        string value = txt.Text;
Line 1462:                        dr[i] = value;
Line 1463:                        Textboxdynamicname++;


-Anto



0
Princy
Top achievements
Rank 2
answered on 12 Jul 2013, 06:37 AM
Hi Anto,

Please try the below code snippet to access the textbox value.If any issue ,please let me know.

C#:
TextBox txt = (TextBox)item.FindControl(dt.Columns[i].ColumnName);
string value = txt.Text;


Thanks,
Princy
0
Anto (DLL Version : 2008.3.1314.35)
Top achievements
Rank 2
answered on 12 Jul 2013, 08:03 AM
Princy,

Again got an error.

"Object reference not set to an instance of an object."

txt is always null. Think so the error is due to the Textbox is inside ItemTemplate.

Is there any other option to do this. 

Thank you.

-Anto
0
Princy
Top achievements
Rank 2
answered on 15 Jul 2013, 05:06 AM
Hi Anto,

You are getting the “Object reference not set to an instance of an object” to the TextBox because the else block of the code is working for GridBoundCoumn as well. So before accessing the TextBox you can make sure that it is a GridTemplateColumn. Please try the following code and let me know if there is any issue.

C#:
DataRow dr;
foreach (GridDataItem item in RadGridText.MasterTableView.Items)
{
    dr = dt.NewRow();
    for (int i = 0; i < columncount; i++)
    {
        //For leaving First Two columns and Columns after 14
        if (i < 2 || i > 14)
        {
            dr[i] = item[RadGridText.MasterTableView.Columns[i].UniqueName].Text;
        }
        else
        {
            string columnType = RadGridText.MasterTableView.GetColumn(dt.Columns[i].ColumnName).ColumnType;
            if (columnType == "GridTemplateColumn")
            {
                TextBox txt = (TextBox)item.FindControl(dt.Columns[i].ColumnName);
                string value = txt.Text;
                dr[i] = value;
                Textboxdynamicname++;
            }
        }
    }
    dt.Rows.Add(dr);
}

Hope this helps.

Thanks,
Princy
0
Anto (DLL Version : 2008.3.1314.35)
Top achievements
Rank 2
answered on 16 Jul 2013, 12:06 PM

Hi Princy,

Again got the same error.

Object reference not set to an instance of an object.


Error appears in this place

string value = txt.Text;

-Anto
  
0
Princy
Top achievements
Rank 2
answered on 16 Jul 2013, 12:37 PM
Hi Anto,

I tried to replicate the issue but no avail,its working fine at my end.Can u please once more share your full edited code so that i may check it,and help you out.

Thanks,
Princy

0
Anto (DLL Version : 2008.3.1314.35)
Top achievements
Rank 2
answered on 16 Jul 2013, 12:50 PM
Hi Princy,

Sure, I have pasted the code.

.cs
//Anto for Grid with Textbox
 
        protected void RadGridText_ItemDataBound(object sender, GridItemEventArgs e)
        {
            foreach (Telerik.Web.UI.GridDataItem dataItem in RadGridText.MasterTableView.Items)
            {
                //string s = dataItem.OwnerTableView.UniqueID;
                foreach (GridColumn col in RadGridText.Columns)
                {
                    //loops through each column in RadGrid
                    if (col.UniqueName.ToString() != "MKTID" && col.UniqueName.ToString() != "MarketName" && col.UniqueName.ToString() != "SORTORDER" && col.UniqueName.ToString() != "MKTPRIORITY" && col.UniqueName.ToString() != "MININVESTMENT")
                    {
                        ((TextBox)dataItem[col.UniqueName.ToString()].Controls[0]).Enabled = true;
                        int index = dataItem.ItemIndex;
                    }
                }
            }
        }
 
        protected void RadGridText_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
        {
            RadGridText.DataSource = dtnewd;
        }
 
        protected void RadGridText_PreRender(object sender, EventArgs e)
        {
            DataSet dsget = GetData();
            DataTable dtnewdtemp = dsget.Tables[0].Clone();
 
            foreach (GridColumn col in RadGridText.Columns)
            {
                for (int i = 0; i < dtnewdtemp.Columns.Count; i++)
                {
                    if (dtnewdtemp.Columns[i].ToString() == col.UniqueName.ToString())
                    {
                        col.HeaderText = dtnewdtemp.Columns[i].ToString();
                    }
                }
            }
        }
 
        public void LoadGridText()
        {
            dt1 = GetData();
            dtnewd = dt1.Tables[0].Clone();
            //
            for (int x = 2; x < dtnewd.Columns.Count - 4; x++)
            {
                dtnewd.Columns[x].DataType = typeof(bool);
            }
 
            for (int c = 0; c < dt1.Tables[0].Rows.Count; c++)
            {
                for (int d = 2; d < dt1.Tables[0].Columns.Count - 4; d++)
                {
                    dt1.Tables[0].Rows[c][d] = dt1.Tables[0].Rows[c][d].ToString() == "1" ? true : false;// Convert.ToBoolean(dt1.Tables[0].Rows[c][d]);
                }
            }
 
            foreach (DataRow dr in dt1.Tables[0].Rows)
            {
                //dtnewd.Rows.Add(dr);
                dtnewd.ImportRow(dr);
            }
 
 
            if (dt != null && dtnewd.Rows.Count > 0)
            {
                for (Int32 m = 0; m < dtnewd.Rows.Count; m++)
                {
                    columnsum += Convert.ToDecimal(dtnewd.Rows[m]["MININVESTMENT"]);
 
                }
 
                txtMinInvestment.Text = columnsum.ToString();
                txtBudget.Text = (Convert.ToDouble(columnsum) * 10).ToString();
 
            }
 
            GridBoundColumn objBoundMKTID = new GridBoundColumn();
            objBoundMKTID.HeaderText = dtnewd.Columns[0].ToString().ToString();
 
            objBoundMKTID.UniqueName = dtnewd.Columns[0].ToString().ToString();
            objBoundMKTID.DataType = typeof(Int32);
            objBoundMKTID.DataField = dtnewd.Columns[0].ToString();
            RadGridText.MasterTableView.Columns.Add(objBoundMKTID);
            objBoundMKTID.Display = false;
 
 
            GridBoundColumn objBound = new GridBoundColumn();
            objBound.HeaderText = dtnewd.Columns[1].ToString().ToString();
            objBound.UniqueName = dtnewd.Columns[1].ToString().ToString();
            objBound.DataType = typeof(string);
            objBound.DataField = dtnewd.Columns[1].ToString();
            objBound.HeaderStyle.Width = 100;
            objBound.HeaderStyle.Wrap = true;
            objBound.ItemStyle.Width = 100;
            objBound.ItemStyle.Wrap = true;
            RadGridText.MasterTableView.Columns.Add(objBound);
 
            for (int z = 2; z < dtnewd.Columns.Count - 4; z++)
            {
                GridTemplateColumn objGridTemp = new GridTemplateColumn();
                objGridTemp.HeaderText = dtnewd.Columns[z].ToString().ToString();
                objGridTemp.UniqueName = dtnewd.Columns[z].ToString().ToString();
                //objBound.DataType = typeof(string);
                objGridTemp.DataField = dtnewd.Columns[z].ToString();
                objGridTemp.HeaderStyle.Width = 100;
                objGridTemp.HeaderStyle.Wrap = true;
                objGridTemp.ItemStyle.Width = 100;
                objGridTemp.ItemStyle.Wrap = true;
                //objGridTemp.ItemTemplate
                //TextBox  txt= new TextBox();
                //txt.ID = "templateColumnTextBox";
 
                //for (int z = 0; z < dtnewd.Columns.Count; z++)
                //{}
 
                objGridTemp.ItemTemplate = new MyTemplate(dtnewd.Columns[z].ToString());
 
                RadGridText.MasterTableView.Columns.Add(objGridTemp);
            }          
 
            GridBoundColumn objBoundcol3 = new GridBoundColumn();
            objBoundcol3.HeaderText = "MININVESTMENT";
            objBoundcol3.UniqueName = "MININVESTMENT";
            objBoundcol3.DataType = typeof(string);
            objBoundcol3.DataField = "MININVESTMENT";
            objBoundcol3.HeaderStyle.Width = 100;
            objBoundcol3.HeaderStyle.Wrap = true;
            objBoundcol3.ItemStyle.Width = 100;
            objBoundcol3.ItemStyle.Wrap = true;
            objBoundcol3.Visible = false;
            RadGridText.MasterTableView.Columns.Add(objBoundcol3);
 
            GridBoundColumn objBoundcol = new GridBoundColumn();
            objBoundcol.HeaderText = "SORTORDER";
            objBoundcol.UniqueName = "SORTORDER";
            objBoundcol.DataType = typeof(string);
            objBoundcol.DataField = "SORTORDER";
            objBoundcol.HeaderStyle.Width = 100;
            objBoundcol.HeaderStyle.Wrap = true;
            objBoundcol.ItemStyle.Width = 100;
            objBoundcol.ItemStyle.Wrap = true;
            objBoundcol.Display = false;
            RadGridText.MasterTableView.Columns.Add(objBoundcol);
 
            GridBoundColumn objBoundcol2 = new GridBoundColumn();
            objBoundcol2.HeaderText = "MKTPRIORITY";
            objBoundcol2.UniqueName = "MKTPRIORITY";
            objBoundcol2.DataType = typeof(Int32);
            objBoundcol2.DataField = "MKTPRIORITY";
            objBoundcol2.HeaderStyle.Width = 100;
            objBoundcol2.HeaderStyle.Wrap = true;
            objBoundcol2.ItemStyle.Width = 100;
            objBoundcol2.ItemStyle.Wrap = true;
            objBoundcol2.Display = false;
            RadGridText.MasterTableView.Columns.Add(objBoundcol2);
        }
 
        protected void btnCalc_Click(object sender, EventArgs e)
        {         
            DataTable dt = new DataTable();
            int Textboxdynamicname = 1;
            int columncount = 0;
            //For Heading
            foreach (GridColumn column in RadGridText.MasterTableView.Columns)
            {
                if (!string.IsNullOrEmpty(column.UniqueName) && !string.IsNullOrEmpty(column.HeaderText))
                {
                    columncount++;
                    dt.Columns.Add(column.UniqueName, typeof(string));
                }
            }
 
            DataRow dr;
            foreach (GridDataItem item in RadGridText.MasterTableView.Items)
            {
                dr = dt.NewRow();
 
                for (int i = 0; i < columncount; i++)
                {
                    //For leaving First Two columns and Columns after 14
                    if (i < 2 || i > 14)
                    {
                        dr[i] = item[RadGridText.MasterTableView.Columns[i].UniqueName].Text;
                    }
                    else
                    
                        string columnType = RadGridText.MasterTableView.GetColumn(dt.Columns[i].ColumnName).ColumnType;
                        if (columnType == "GridTemplateColumn")
                        {
                            //TextBox txt = (TextBox)item.FindControl("TextBox" + Textboxdynamicname);
                            //TextBox txt = (TextBox)item[dt.Columns[i].ColumnName].FindControl("TextBox" + Textboxdynamicname);
                            TextBox txt = (TextBox)item.FindControl(dt.Columns[i].ColumnName);
                            string value = txt.Text;
                            dr[i] = value;
                            Textboxdynamicname++;
                        }
                    }
                }
 
                dt.Rows.Add(dr);
            }
        }
         
        public class MyTemplate : ITemplate
        {
            protected TextBox boolValue;
            protected TextBox textBox;
            private string colname;
            
            public MyTemplate(string cName)
            {
                colname = cName;
            }
 
            public void InstantiateIn(System.Web.UI.Control container)
            {           
 
                textBox = new TextBox();
                textBox.ID = "TextBox" + Textboxname;
                textBox.Width = 50;
                container.Controls.Add(textBox);
                Textboxname++;
 
            }
            void boolValue_DataBinding(object sender, EventArgs e)
            {
                TextBox cBox = (TextBox)sender;
                GridDataItem container = (GridDataItem)cBox.NamingContainer;
            }          
 
        }
 
        //Anto for Grid with Textbox

aspx
<%--Anto for Text box in the grid--%>
        <tr>
            <td colspan="2">
                <telerik:RadGrid ID="RadGridText" runat="server" Skin="Vista" AutoGenerateColumns="false"
                    OnItemDataBound="RadGridText_ItemDataBound" OnNeedDataSource="RadGridText_NeedDataSource"
                    OnPreRender="RadGridText_PreRender" Height="250px" Width="1000px">
                    <MasterTableView HeaderStyle-CssClass="disable-highlight" Width="98%" HeaderStyle-HorizontalAlign="Center"
                        HeaderStyle-Wrap="true">
                        <Columns>
                        </Columns>
                    </MasterTableView>
                    <ClientSettings Scrolling-AllowScroll="true" Resizing-AllowColumnResize="true" Scrolling-SaveScrollPosition="true"
                        Scrolling-FrozenColumnsCount="2" Scrolling-UseStaticHeaders="true">
                        <Selecting AllowRowSelect="true" />
                        <%-- <ClientEvents OnColumnDblClick="myDblClickEvent" OnRowDblClick="RowSelectCheck" />--%>
                        <Scrolling AllowScroll="true" UseStaticHeaders="true" />
                    </ClientSettings>
                </telerik:RadGrid>
            </td>
        </tr>
        <%--Anto for Text box in the grid--%>
        <tr>
            <td>
                <asp:Button runat="server" ID="BtnCalc" Text="Calculate" CssClass="button" OnClick="btnCalc_Click" />
            </td>
        </tr>


-Anto
Tags
Grid
Asked by
Anto (DLL Version : 2008.3.1314.35)
Top achievements
Rank 2
Answers by
Princy
Top achievements
Rank 2
Anto (DLL Version : 2008.3.1314.35)
Top achievements
Rank 2
Share this question
or