Hi,I need some help with adding column dynamicly by pressing button,
Example:
<asp:textbox runat="server" ID="txtName" />
<asp:Button runat="server" ID="btnAddColumn" Text="Add Column" />
<telerik:RadGrid runat="server" ID="gridData" AutoGenerateColumns="false" ShowHeader="true" Width="100%" Height="500px" ShowStatusBar="true" >
<MasterTableView EditMode="InPlace"
ShowHeader="true" ShowFooter ="true" ShowHeadersWhenNoRecords="true" >
..........
</MasterTableView>
</telerik:RadGrid>
on server side ,on button click event i tryingh to add GridBoundColumn with name from txtName
and HeaderText from txtName and DataField from txtName,I also updating my datasource with new column
by nothing,the Column is added (i testing it with additional postback button pressing) but there is no visible Header text on client side and the header text on server side is empty too,
Dim ContainerColumn As New GridBoundColumn
gridData.MasterTableView.Columns.Add(ContainerColumn)
AddColumnToData(txtName.Text)
ContainerColumn.Display = True
ContainerColumn.HeaderText = txtName.Text
ContainerColumn.DataField = txtName.Text
ContainerColumn.UniqueName = ContainerColumn.DataField
Example:
<asp:textbox runat="server" ID="txtName" />
<asp:Button runat="server" ID="btnAddColumn" Text="Add Column" />
<telerik:RadGrid runat="server" ID="gridData" AutoGenerateColumns="false" ShowHeader="true" Width="100%" Height="500px" ShowStatusBar="true" >
<MasterTableView EditMode="InPlace"
ShowHeader="true" ShowFooter ="true" ShowHeadersWhenNoRecords="true" >
..........
</MasterTableView>
</telerik:RadGrid>
on server side ,on button click event i tryingh to add GridBoundColumn with name from txtName
and HeaderText from txtName and DataField from txtName,I also updating my datasource with new column
by nothing,the Column is added (i testing it with additional postback button pressing) but there is no visible Header text on client side and the header text on server side is empty too,
Dim ContainerColumn As New GridBoundColumn
gridData.MasterTableView.Columns.Add(ContainerColumn)
AddColumnToData(txtName.Text)
ContainerColumn.Display = True
ContainerColumn.HeaderText = txtName.Text
ContainerColumn.DataField = txtName.Text
ContainerColumn.UniqueName = ContainerColumn.DataField
10 Answers, 1 is accepted
0
Shinu
Top achievements
Rank 2
answered on 06 Mar 2014, 09:12 AM
Hi Simon,
Please try the following code snippet in the button click to generate the columns.
C#:
Thanks,
Shinu
Please try the following code snippet in the button click to generate the columns.
C#:
protected void Button1_Click(object sender, EventArgs e){ string value = TextBox1.Text; GridBoundColumn boundColumn; boundColumn = new GridBoundColumn(); RadGrid1.MasterTableView.Columns.Add(boundColumn); boundColumn.DataField = value; boundColumn.HeaderText = value; boundColumn.UniqueName = value; RadGrid1.Rebind();}Thanks,
Shinu
0
Simon
Top achievements
Rank 1
answered on 06 Mar 2014, 09:43 AM
Thanks for the fast response,Additional problem,
when i adding columns in this scenario:
1)Add break with value 5
2)Add break with value 7
3)Add Container with some data from dropdown
i got an error:Invalid column group configuration! Column "containers" cannot be after column "CONTAINER_RATEBLBULK"
Line 76: gridData.Rebind()
How can i send you sources?
when i adding columns in this scenario:
1)Add break with value 5
2)Add break with value 7
3)Add Container with some data from dropdown
i got an error:Invalid column group configuration! Column "containers" cannot be after column "CONTAINER_RATEBLBULK"
Line 76: gridData.Rebind()
How can i send you sources?
0
Simon
Top achievements
Rank 1
answered on 06 Mar 2014, 09:46 AM
0
Simon
Top achievements
Rank 1
answered on 06 Mar 2014, 09:49 AM
Another thing 'i see after adding 2 columns ,grid have 2 adding some empty columns on client?
0
Shinu
Top achievements
Rank 2
answered on 07 Mar 2014, 05:53 AM
Hi Simon,
I'm not clear about your issues. Please elaborate with screenshots. Paste your code snippet here as well.
You can take a look at the following article on Creating a RadGrid Programmatically which may help you to create columns.
Thanks,
Shinu
I'm not clear about your issues. Please elaborate with screenshots. Paste your code snippet here as well.
You can take a look at the following article on Creating a RadGrid Programmatically which may help you to create columns.
Thanks,
Shinu
0
Simon
Top achievements
Rank 1
answered on 10 Mar 2014, 12:31 PM
Hi,
Actually I'm looking for some example to add/remove Columns with RadGrid programmaticly.
It will be Form with textbox,and button outside the grid.After clicking the button it must add Column to DataTable and to RagGrid
The additional thisg is what grid must have some Static columns .
Can you provide some examples
Actually I'm looking for some example to add/remove Columns with RadGrid programmaticly.
It will be Form with textbox,and button outside the grid.After clicking the button it must add Column to DataTable and to RagGrid
The additional thisg is what grid must have some Static columns .
Can you provide some examples
0
Shinu
Top achievements
Rank 2
answered on 11 Mar 2014, 04:19 AM
Hi Simon,
Please take a look at the sample code snippet. Provide your code snippet for more help.
ASPX:
C#:
Thanks,
Shinu
Please take a look at the sample code snippet. Provide your code snippet for more help.
ASPX:
<asp:TextBox ID="colTxtBox" runat="server"></asp:TextBox><asp:Button ID="ColCreateBtn" runat="server" Text="Create Column" OnClick="ColCreateBtn_Click" /><asp:Button ID="ColRemoveBtn" runat="server" Text="Remove Column" OnClick="ColRemoveBtn_Click" /><telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" DataSourceID="SqlDataSource1" AllowPaging="true" AllowSorting="true"> <MasterTableView DataKeyNames="OrderID"> <Columns> <telerik:GridBoundColumn UniqueName="OrderID" DataField="OrderID" HeaderText="OrderID" /> <telerik:GridBoundColumn DataField="ShipCity" HeaderText="ShipCity" UniqueName="ShipCity" /> </Columns> </MasterTableView></telerik:RadGrid><asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Northwind_newConnectionString3 %>" SelectCommand="SELECT * FROM [Orders]"></asp:SqlDataSource>C#:
protected void ColCreateBtn_Click(object sender, EventArgs e){ string value = colTxtBox.Text; GridBoundColumn boundColumn; boundColumn = new GridBoundColumn(); RadGrid1.MasterTableView.Columns.Add(boundColumn); boundColumn.DataField = value; boundColumn.HeaderText = value; boundColumn.UniqueName = value; RadGrid1.Rebind();}protected void ColRemoveBtn_Click(object sender, EventArgs e){ string value = colTxtBox.Text; RadGrid1.MasterTableView.GetColumn(value).Visible = false; }Thanks,
Shinu
0
Hi Simon,
I would recommend you to examine the following help article which describes how to change the grid structure on postback.
Regards,
Kostadin
Telerik
I would recommend you to examine the following help article which describes how to change the grid structure on postback.
Regards,
Kostadin
Telerik
DevCraft Q1'14 is here! Watch the online conference to see how this release solves your top-5 .NET challenges. Watch on demand now.
0
Simon
Top achievements
Rank 1
answered on 11 Mar 2014, 01:01 PM
Hi ,
Thanks for help.
The only thing i cant understand is how to access template item controls that was created programmaticly
for example:
I have created item tepmplate with RADTEXTBOX,and put it to culumns
the name of RadTextbox inside the MyTemplateAmount is txt+c.ColumnName
On client side i changing the data inside RADTEXTBOX,next step i press button(postback) ,run on items:
For Each item As GridDataItem In gridData.MasterTableView.Items
but I cant access RADTEXTBOX,it doesnt exists in Items:
Please help
Thanks for help.
The only thing i cant understand is how to access template item controls that was created programmaticly
for example:
I have created item tepmplate with RADTEXTBOX,and put it to culumns
Dim tc = New GridTemplateColumn tc.ItemTemplate = New MyTemplateAmount(c.ColumnName) gridData.MasterTableView.Columns.Add(tc) tc.HeaderText = "MINIMUM" tc.DataField = c.ColumnName tc.UniqueName = c.ColumnNameOn client side i changing the data inside RADTEXTBOX,next step i press button(postback) ,run on items:
For Each item As GridDataItem In gridData.MasterTableView.Items
but I cant access RADTEXTBOX,it doesnt exists in Items:
Dim text As RadTextBox = item(c.UniqueName).FindControl("txtMINIMUM")Please help
0
Shinu
Top achievements
Rank 2
answered on 13 Mar 2014, 11:52 AM
Hi Simon,
You are not able to get the RadTextBox value because its not being saved to view state when created on the button click. Column templates must be added in the Page_Init event handler, so that the template controls can be added to the ViewState. You may try a similar approach to create template column and access values on button click.
ASPX:
C#:
JS:
Thanks,
Shinu
You are not able to get the RadTextBox value because its not being saved to view state when created on the button click. Column templates must be added in the Page_Init event handler, so that the template controls can be added to the ViewState. You may try a similar approach to create template column and access values on button click.
ASPX:
<asp:Button ID="Button2" runat="server" Text="Create Column" OnClick="Button2_Click" OnClientClick="SetSource(this.id)" /><asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder><asp:Button ID="Button1" runat="server" Text="Get Values" OnClick="Button1_Click" /><asp:HiddenField ID="CustomHiddenField" runat="server" />C#:
Private grid As RadGridProtected Sub Page_Init(sender As Object, e As EventArgs) grid = New RadGrid() grid.AutoGenerateColumns = False grid.DataSourceID = "SqlDataSource1" grid.AllowPaging = True grid.PageSize = 10 grid.Skin = "Outlook" Dim templateColumn As New GridTemplateColumn() If IsPostBack Then Dim ControlID As String = String.Empty If Not [String].IsNullOrEmpty(Request.Form(CustomHiddenField.UniqueID)) Then ControlID = Request.Form(CustomHiddenField.UniqueID) Dim ColumnName As String = "ShipCity" templateColumn.ItemTemplate = New MyTemplate(ColumnName) templateColumn.HeaderText = ColumnName templateColumn.UniqueName = ColumnName templateColumn.DataField = ColumnName End If End If grid.MasterTableView.Columns.Add(templateColumn) PlaceHolder1.Controls.Add(grid)End SubPrivate Class MyTemplate Implements ITemplate Protected textBox As RadTextBox Private colname As String Public Sub New(cName As String) colname = cName End Sub Public Sub InstantiateIn(container As System.Web.UI.Control) textBox = New RadTextBox() textBox.ID = Convert.ToString("txt") & colname container.Controls.Add(textBox) End SubEnd ClassProtected Sub Button1_Click(sender As Object, e As EventArgs) For Each items As GridDataItem In grid.MasterTableView.Items Dim txt As RadTextBox = DirectCast(items.FindControl("txtShipCity"), RadTextBox) NextEnd SubProtected Sub Button2_Click(sender As Object, e As EventArgs) grid.Rebind()End SubJS:
<script type="text/javascript"> function SetSource(SourceID) { var hidSourceID = document.getElementById("<%=CustomHiddenField.ClientID%>"); hidSourceID.value = SourceID; }</script>Thanks,
Shinu