I have a Radgrid with a text box template column:
The TextBoxTemplateColumn is as follows:
templateColumn.DataField = this._PriceDealProductBanTable.BillingAccountNumberColumn.ColumnName; doesnt do the trick of binding the textbox to a column. How can I achieve it? I want the current values to be displayed on the text box.
templateColumn = new GridTemplateColumn();
templateColumnName = "BAN";
this._RadGrid1.MasterTableView.Columns.Add(templateColumn);
templateColumn.ItemTemplate = new TextBoxTemplate(templateColumnName);
templateColumn.HeaderText = templateColumnName;
templateColumn.DataField = this._PriceDealProductBanTable.BillingAccountNumberColumn.ColumnName;
templateColumn.AllowFiltering = false;
public class TextBoxTemplate : ITemplate
{
protected RadTextBox _textBox;
string _columnName;
public TextBoxTemplate(string columnName)
{
this._columnName = columnName;
}
public void InstantiateIn(System.Web.UI.Control container)
{
this._textBox = new RadTextBox();
this._textBox.ID = this._columnName;
container.Controls.Add(this._textBox);
}
}
8 Answers, 1 is accepted
0
Accepted
Jayesh Goyani
Top achievements
Rank 2
answered on 12 Jun 2014, 05:59 PM
Hello,
Please try with the below code snippet.
http://www.telerik.com/help/aspnet-ajax/grid-programmatic-creation.html
Let me know if any concern.
Thanks,
Jayesh Goyani
Please try with the below code snippet.
public
partial
class
WebForm1 : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
GridTemplateColumn templateColumn =
new
GridTemplateColumn();
string
templateColumnName =
"BAN"
;
this
.RadGrid1.MasterTableView.Columns.Add(templateColumn);
templateColumn.ItemTemplate =
new
TextBoxTemplate(templateColumnName);
templateColumn.HeaderText = templateColumnName;
templateColumn.DataField =
"Name"
;
templateColumn.AllowFiltering =
false
;
}
protected
void
RadGrid1_NeedDataSource(
object
sender, GridNeedDataSourceEventArgs e)
{
DataTable dt =
new
DataTable();
dt.Columns.Add(
"Name"
);
dt.Rows.Add(
"name1"
);
dt.Rows.Add(
"name2"
);
RadGrid1.DataSource = dt;
}
}
public
class
TextBoxTemplate : ITemplate
{
protected
RadTextBox _textBox;
string
_columnName;
public
TextBoxTemplate(
string
columnName)
{
this
._columnName = columnName;
}
public
void
InstantiateIn(System.Web.UI.Control container)
{
this
._textBox =
new
RadTextBox();
this
._textBox.ID =
this
._columnName;
container.Controls.Add(
this
._textBox);
_textBox.DataBinding +=
new
EventHandler(_textBox_DataBinding);
}
void
_textBox_DataBinding(
object
sender, EventArgs e)
{
RadTextBox txt = (RadTextBox)sender;
GridDataItem container = (GridDataItem)txt.NamingContainer;
txt.Text = ((DataRowView)container.DataItem)[
"Name"
].ToString();
}
}
http://www.telerik.com/help/aspnet-ajax/grid-programmatic-creation.html
Let me know if any concern.
Thanks,
Jayesh Goyani
0
RB
Top achievements
Rank 1
answered on 12 Jun 2014, 07:23 PM
Thanks for the quick response. But when I edit the text and click on the insert button, the new value is inserted in the table, but it is not reflected in the grid.
txt.Text = ((DataRowView)container.DataItem)["Name"].ToString();
The above code still fetches the old value. How can I fetch the new value?
txt.Text = ((DataRowView)container.DataItem)["Name"].ToString();
The above code still fetches the old value. How can I fetch the new value?
0
RB
Top achievements
Rank 1
answered on 12 Jun 2014, 08:50 PM
The RadGrid had a textbox, i can edit its values and on click of Insert button, the new value is inserted in the DB. But this new value is not reflected in the text box. Instead it shows the previous value!
0
Jayesh Goyani
Top achievements
Rank 2
answered on 17 Jun 2014, 05:16 PM
Hello,
Your problem is resolved?
Thanks,
Jayesh Goyani
Your problem is resolved?
Thanks,
Jayesh Goyani
0
RB
Top achievements
Rank 1
answered on 17 Jun 2014, 05:17 PM
No. Not resolved yet!
0
Jayesh Goyani
Top achievements
Rank 2
answered on 18 Jun 2014, 07:04 PM
Hello,
I have tried with the below code snippet but not able to reproduce this issue. I am able to get updated value in update event.
Thanks,
Jayesh Goyani
I have tried with the below code snippet but not able to reproduce this issue. I am able to get updated value in update event.
public
partial
class
WebForm1 : System.Web.UI.Page
{
protected
void
Page_Init(
object
sender, EventArgs e)
{
GridTemplateColumn templateColumn =
new
GridTemplateColumn();
string
templateColumnName =
"BAN"
;
this
.RadGrid1.MasterTableView.Columns.Add(templateColumn);
templateColumn.ItemTemplate =
new
TextBoxTemplate(templateColumnName);
templateColumn.HeaderText = templateColumnName;
templateColumn.DataField =
"Name"
;
templateColumn.UniqueName =
"testColumn"
;
templateColumn.AllowFiltering =
false
;
}
protected
void
RadGrid1_NeedDataSource(
object
sender, GridNeedDataSourceEventArgs e)
{
DataTable dt =
new
DataTable();
if
(Session[
"TempData"
] ==
null
)
{
dt.Columns.Add(
"Name"
);
dt.Rows.Add(
"name1"
);
dt.Rows.Add(
"name2"
);
Session[
"TempData"
] = dt;
}
dt = (DataTable)Session[
"TempData"
];
RadGrid1.DataSource = dt;
}
protected
void
RadGrid1_UpdateCommand(
object
sender, GridCommandEventArgs e)
{
GridEditableItem item = e.Item
as
GridEditableItem;
string
strNewName = (item[
"testColumn"
].FindControl(
"BAN"
)
as
RadTextBox).Text;
DataTable dt = (DataTable)Session[
"TempData"
];
dt.Rows[0][0] = strNewName;
//Temporary i have set this updated value in first row
Session[
"TempData"
] = dt;
}
protected
void
RadGrid1_InsertCommand(
object
sender, GridCommandEventArgs e)
{
GridEditableItem item = e.Item
as
GridEditableItem;
string
strNewName = (item[
"testColumn"
].FindControl(
"BAN"
)
as
RadTextBox).Text;
DataTable dt = (DataTable)Session[
"TempData"
];
dt.Rows.Add(strNewName);
Session[
"TempData"
] = dt;
}
}
public
class
TextBoxTemplate : ITemplate
{
protected
RadTextBox _textBox;
string
_columnName;
public
TextBoxTemplate(
string
columnName)
{
this
._columnName = columnName;
}
public
void
InstantiateIn(System.Web.UI.Control container)
{
this
._textBox =
new
RadTextBox();
this
._textBox.ID =
this
._columnName;
container.Controls.Add(
this
._textBox);
_textBox.DataBinding +=
new
EventHandler(_textBox_DataBinding);
}
void
_textBox_DataBinding(
object
sender, EventArgs e)
{
RadTextBox txt = (RadTextBox)sender;
GridDataItem container = (GridDataItem)txt.NamingContainer;
txt.Text = ((DataRowView)container.DataItem)[
"Name"
].ToString();
}
}
Thanks,
Jayesh Goyani
0
RB
Top achievements
Rank 1
answered on 19 Jun 2014, 05:40 PM
The NeedDataSource event was not being fired after Rebind is called. Hence I never got the updated values!So had to set Grid.DataSource to null, before calling the Rebind method. It worked!
0
Jayesh Goyani
Top achievements
Rank 2
answered on 27 Jun 2014, 06:17 PM
Hello,
Can you please provide your code or create new project and add your code in it and send to us?
Thanks,
Jayesh Goyani
Can you please provide your code or create new project and add your code in it and send to us?
Thanks,
Jayesh Goyani