Hey everyone,
I am working with RadGrid,everything(Edit,Insert and Delete) works fine when there is data in grid.But when i want Grid to be used only for Inserting new records,the grid is not visible,only a single line appears in the web page.Is this not possible?..If yes HOW?..
Thanks
Amit
I am working with RadGrid,everything(Edit,Insert and Delete) works fine when there is data in grid.But when i want Grid to be used only for Inserting new records,the grid is not visible,only a single line appears in the web page.Is this not possible?..If yes HOW?..
Thanks
Amit
13 Answers, 1 is accepted
0
Amit
Top achievements
Rank 1
answered on 11 Oct 2010, 12:02 PM
Hey,
Now i've proceeded a bit by applying a false select query to the Sql Data source of the radGrid.It is visible now.My grid now looks like in attached file...
Now,how can i bring the rates of the selected item from the dropdown list to the label in front of rate on ddl's selected index change?...
Also,one more thing radgrid events like itemCreated,itemDataBound,NeedDataSource,ItemCommand--When to use which?.. any link that
that provides thorough explanation of these events.Which will be required for inserting new records?....
Now i've proceeded a bit by applying a false select query to the Sql Data source of the radGrid.It is visible now.My grid now looks like in attached file...
Now,how can i bring the rates of the selected item from the dropdown list to the label in front of rate on ddl's selected index change?...
Also,one more thing radgrid events like itemCreated,itemDataBound,NeedDataSource,ItemCommand--When to use which?.. any link that
that provides thorough explanation of these events.Which will be required for inserting new records?....
0
Accepted
Princy
Top achievements
Rank 2
answered on 11 Oct 2010, 01:06 PM
Hello Amit,
Here is the sample code that I tried in my application for similar kind of scenario(set Text of Label based on the SelectedValue of RadComboBox.)
ASPX:
C#:
And please refer the following documentation.
Server Side Events
Distinguishing the major differences between ItemCreated and ItemDataBound events
Advanced Data-binding (using NeedDataSource event)
Thanks,
Princy.
Here is the sample code that I tried in my application for similar kind of scenario(set Text of Label based on the SelectedValue of RadComboBox.)
ASPX:
<
telerik:GridTemplateColumn
>
<
EditItemTemplate
>
<
telerik:RadComboBox
ID
=
"RadComboBox1"
runat
=
"server"
DataSourceID
=
"SqlDataSource1"
DataTextField
=
"EmployeeID"
DataValueField
=
"EmployeeID"
AutoPostBack
=
"true"
SelectedValue='<%#Bind("EmployeeID") %>'
OnSelectedIndexChanged="RadComboBox1_SelectedIndexChanged">
</
telerik:RadComboBox
>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
>
<
EditItemTemplate
>
<
asp:Label
ID
=
"FirstName"
runat
=
"server"
></
asp:Label
>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
C#:
protected
void
RadComboBox1_SelectedIndexChanged(
object
o, RadComboBoxSelectedIndexChangedEventArgs e)
{
RadComboBox combo = (RadComboBox)o;
GridEditFormInsertItem insertItem = (GridEditFormInsertItem)combo.NamingContainer;
Label lbname = (Label)insertItem.FindControl(
"FirstName"
);
SqlConnection con =
new
SqlConnection(WebConfigurationManager.ConnectionStrings[
"NorthwindConnectionString"
].ConnectionString);
SqlCommand cmd =
new
SqlCommand(
"select [FirstName] FROM [Employees] where EmployeeID=@EmployeeID "
, con);
cmd.Parameters.Add(
new
SqlParameter(
"@EmployeeID"
, combo.SelectedValue));
SqlDataAdapter da =
new
SqlDataAdapter(cmd);
DataSet ds =
new
DataSet();
da.Fill(ds);
lbname.Text = ds.Tables[0].Rows[0].ItemArray.GetValue(0).ToString();
}
And please refer the following documentation.
Server Side Events
Distinguishing the major differences between ItemCreated and ItemDataBound events
Advanced Data-binding (using NeedDataSource event)
Thanks,
Princy.
0
Amit
Top achievements
Rank 1
answered on 11 Oct 2010, 01:14 PM
Actually,I am using a GridDropDown Column and i've used a Sql datasource for populating Combo box.Under which event should i write my code and how to call selectedIndexChange?..
ItemCreated or ItemDataBound?...
ItemCreated or ItemDataBound?...
0
Accepted
Princy
Top achievements
Rank 2
answered on 12 Oct 2010, 08:48 AM
Hello Amit,
Try the following code snippet in ItemCreated event to achieve your requirement.
ASPX:
C#:
Thanks,
Princy.
Try the following code snippet in ItemCreated event to achieve your requirement.
ASPX:
<
telerik:GridDropDownColumn
ListTextField
=
"EmployeeID"
ListValueField
=
"EmployeeID"
DataSourceID
=
"SqlDataSource1"
UniqueName
=
"GridDropDownColumn"
>
</
telerik:GridDropDownColumn
>
C#:
protected
void
RadGrid1_ItemCreated(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridEditFormInsertItem && e.Item.OwnerTableView.IsItemInserted)
{
GridEditFormInsertItem insertItem = (GridEditFormInsertItem)e.Item;
RadComboBox combo = (RadComboBox)insertItem[
"GridDropDownColumn"
].Controls[0];
combo.AutoPostBack =
true
;
combo.SelectedIndexChanged+=
new
RadComboBoxSelectedIndexChangedEventHandler(combo_SelectedIndexChanged);
//attaching SelectedIndexChanged event
}
}
protected
void
combo_SelectedIndexChanged(
object
o, RadComboBoxSelectedIndexChangedEventArgs e)
{
}
Thanks,
Princy.
0
Amit
Top achievements
Rank 1
answered on 14 Oct 2010, 06:02 AM
Hey PRINCY,
I am doing this now.aspx--
and CS is--
its throwing error -
Thanks
Amit
I am doing this now.aspx--
<
telerik:GridDropDownColumn
HeaderText
=
"Product Name"
UniqueName
=
"GridDropDownColumn"
DataSourceID
=
"SqlDataSource1"
ListTextField
=
"ProductName"
DataField
=
"ProductName"
DropDownControlType
=
"RadComboBox"
>
</
telerik:GridDropDownColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Rate"
UniqueName
=
"RateTemplateColumn"
>
<
ItemTemplate
>
<
asp:Label
ID
=
"lblRate"
runat
=
"server"
/>
</
ItemTemplate
>
<
EditItemTemplate
>
<
asp:Label
ID
=
"lblRateE"
runat
=
"server"
/>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
protected
void
RadGrid1_ItemCreated(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridEditFormInsertItem && e.Item.OwnerTableView.IsItemInserted)
{
GridEditFormInsertItem insertItem = (GridEditFormInsertItem)e.Item;
RadComboBox combo = (RadComboBox)insertItem[
"GridDropDownColumn"
].Controls[0];
combo.AutoPostBack =
true
;
combo.SelectedIndexChanged +=
new
RadComboBoxSelectedIndexChangedEventHandler(combo_SelectedIndexChanged);
//attaching SelectedIndexChanged event
}
}
protected
void
combo_SelectedIndexChanged(
object
o, RadComboBoxSelectedIndexChangedEventArgs e)
{
RadComboBox combo = (RadComboBox)o;
GridEditFormInsertItem insertItem = (GridEditFormInsertItem)combo.NamingContainer;
Label lblRate = (Label)insertItem.FindControl(
"lblRateE"
);
SqlConnection conn =
new
SqlConnection(ConfigurationSettings.AppSettings[
"conn"
].ToString());
SqlCommand cmd =
new
SqlCommand(
"select [Rate] FROM [tblProducts] where ProductName=@ProductName"
, conn);
cmd.Parameters.Add(
new
SqlParameter(
"@ProductName"
, combo.SelectedValue));
SqlDataAdapter da =
new
SqlDataAdapter(cmd);
DataSet ds =
new
DataSet();
da.Fill(ds);
lblRate.Text = ds.Tables[0].Rows[0].ItemArray.GetValue(0).ToString();
}
There is no row at position 0.
I want lblRate.Text to show Rate of the selected item from combobox.
Thanks
Amit
0
Accepted
Princy
Top achievements
Rank 2
answered on 14 Oct 2010, 06:44 AM
Hello Amit,
Since you have not set the ListValueField property of GridDropDownColumn, combo.SelectedValue returns null. I guess thats why you are getting this error. In order to avoid this, set ListValueField of GridDropDownColumn to corresponding field (or use combo.SelectedItem.Text to get the selected item of RadComboBox).
ASPX:
Thanks,
Princy.
Since you have not set the ListValueField property of GridDropDownColumn, combo.SelectedValue returns null. I guess thats why you are getting this error. In order to avoid this, set ListValueField of GridDropDownColumn to corresponding field (or use combo.SelectedItem.Text to get the selected item of RadComboBox).
ASPX:
<
telerik:GridDropDownColumn
HeaderText
=
"Product Name"
UniqueName
=
"GridDropDownColumn"
DataSourceID
=
"SqlDataSource1"
ListTextField
=
"ProductName"
ListValueField
=
"ProductName"
DataField
=
"ProductName"
DropDownControlType
=
"RadComboBox"
>
</
telerik:GridDropDownColumn
>
Thanks,
Princy.
0
Amit
Top achievements
Rank 1
answered on 14 Oct 2010, 07:01 AM
Hey Princy,
Thanks Man,that resolves the problem.I jus wanna ask one more thing..i am adding a new item to the combobox like this...
but it does'nt add to the list.
Thanks
Amit
Thanks Man,that resolves the problem.I jus wanna ask one more thing..i am adding a new item to the combobox like this...
protected
void
RadGrid1_ItemCreated(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridEditFormInsertItem && e.Item.OwnerTableView.IsItemInserted)
{
GridEditFormInsertItem insertItem = (GridEditFormInsertItem)e.Item;
RadComboBox combo = (RadComboBox)insertItem[
"GridDropDownColumn"
].Controls[0];
combo.Items.Insert(0,
new
RadComboBoxItem(
"Select an Item"
,
"0"
));
combo.SelectedIndex = 0;
combo.AutoPostBack =
true
;
combo.SelectedIndexChanged +=
new
RadComboBoxSelectedIndexChangedEventHandler(combo_SelectedIndexChanged);
//attaching SelectedIndexChanged event
}
}
but it does'nt add to the list.
Thanks
Amit
0
Accepted
Princy
Top achievements
Rank 2
answered on 14 Oct 2010, 07:33 AM
Hello Amit,
If you want to add new item to RadComboBox, try it in ItemDataBound event rather than ItemCreated event. The ItemCreated event is too early to bind the combo and added items are overridden when binding the combo.
C#:
Thanks,
Princy.
If you want to add new item to RadComboBox, try it in ItemDataBound event rather than ItemCreated event. The ItemCreated event is too early to bind the combo and added items are overridden when binding the combo.
C#:
protected
void
RadGrid1_ItemDataBound(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridEditFormInsertItem && e.Item.OwnerTableView.IsItemInserted)
{
GridEditFormInsertItem insertItem = (GridEditFormInsertItem)e.Item;
RadComboBox combo = (RadComboBox)insertItem[
"GridDropDownColumn"
].Controls[0];
combo.Items.Insert(0,
new
RadComboBoxItem(
"Select an Item"
,
"0"
));
}
}
Thanks,
Princy.
0
Amit
Top achievements
Rank 1
answered on 14 Oct 2010, 08:33 AM
Hey,
Jus a quick question once again.After label shows the Rate of the selected item,how to set focus on the RadNumericTextBox that i've used for inputting no. of quantity user wants to place in Order.I am doing this--
But its showing error--
Unable to cast object of type 'System.Web.UI.LiteralControl' to type 'Telerik.Web.UI.RadNumericTextBox'.
Thanks
Amit.
Jus a quick question once again.After label shows the Rate of the selected item,how to set focus on the RadNumericTextBox that i've used for inputting no. of quantity user wants to place in Order.I am doing this--
protected
void
RadGrid1_ItemDataBound(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridEditFormInsertItem && e.Item.OwnerTableView.IsItemInserted)
{
GridEditFormInsertItem insertItem = (GridEditFormInsertItem)e.Item;
RadComboBox combo = (RadComboBox)insertItem[
"GridDropDownColumn"
].Controls[0];
combo.Items.Insert(0,
new
RadComboBoxItem(
"Select an Item"
,
"0"
));
RadNumericTextBox txtQauntityE = (RadNumericTextBox)insertItem[
"QuantityTemplateColumn"
].Controls[0];
txtQauntityE.Focus();
}
}
Unable to cast object of type 'System.Web.UI.LiteralControl' to type 'Telerik.Web.UI.RadNumericTextBox'.
Thanks
Amit.
0
Accepted
Shinu
Top achievements
Rank 2
answered on 14 Oct 2010, 11:06 AM
Hello Amit,
For referencing control in editform if it is inside (GridTemplateColumn/FormTemplate), then use the Findcontrol(controlID) method.
Code:
-Shinu.
For referencing control in editform if it is inside (GridTemplateColumn/FormTemplate), then use the Findcontrol(controlID) method.
Code:
RadNumericTextBox txtQauntityE = (RadNumericTextBox)insertItem.FindControl(
"QuantityTemplateColumn"
);
-Shinu.
0
Amit
Top achievements
Rank 1
answered on 14 Oct 2010, 11:14 AM
Hello Shinu,
It looks like this now--
gettin this error--Object reference not set to an instance of an object.(NullReferenceException)
I am getting Rate of selected item from combobox on to a label.After which i want to set focus on textBox within same event.
Thanks
Amit
It looks like this now--
protected
void
RadGrid1_ItemDataBound(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridEditFormInsertItem && e.Item.OwnerTableView.IsItemInserted)
{
GridEditFormInsertItem insertItem = (GridEditFormInsertItem)e.Item;
RadComboBox combo = (RadComboBox)insertItem[
"GridDropDownColumn"
].Controls[0];
combo.Items.Insert(0,
new
RadComboBoxItem(
"Select an Item"
,
"0"
));
RadNumericTextBox txtQauntityE = (RadNumericTextBox)insertItem.FindControl(
"QuantityTemplateColumn"
);
txtQauntityE.Focus();
}
}
I am getting Rate of selected item from combobox on to a label.After which i want to set focus on textBox within same event.
Thanks
Amit
0
Accepted
Shinu
Top achievements
Rank 2
answered on 15 Oct 2010, 08:14 AM
Hi Amit,
Here is my the modified code. Try this and see whether it helps.
ASPX:
Code:
Happy coding,
Shinu.
Here is my the modified code. Try this and see whether it helps.
ASPX:
<
Columns
>
<
telerik:GridDropDownColumn
UniqueName
=
"GridDropDownColumn"
DataField
=
"ProductName"
DataSourceID
=
"SqlDataSource1"
ListTextField
=
"ProductName"
ListValueField
=
"ProductName"
>
</
telerik:GridDropDownColumn
>
<
telerik:GridTemplateColumn
>
<
EditItemTemplate
>
<
asp:Label
ID
=
"lblRateE"
runat
=
"server"
Text
=
"Label"
></
asp:Label
>
</
EditItemTemplate
>
<
ItemTemplate
>
...
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
UniqueName
=
"GridTemplateColumn"
>
<
EditItemTemplate
>
<
telerik:RadNumericTextBox
ID
=
"QtyNumericTextBox"
runat
=
"server"
>
</
telerik:RadNumericTextBox
>
</
EditItemTemplate
>
<
ItemTemplate
>
...
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
Code:
protected
void
RadGrid1_ItemCreated(
object
sender, Telerik.Web.UI.GridItemEventArgs e)
{
if
(e.Item
is
GridEditFormInsertItem && e.Item.OwnerTableView.IsItemInserted)
{
GridEditFormInsertItem insertItem = (GridEditFormInsertItem)e.Item;
RadComboBox combo = (RadComboBox)insertItem[
"GridDropDownColumn"
].Controls[0];
combo.AutoPostBack =
true
;
// Attach selectedIndexChanged event to dropdown control
combo.SelectedIndexChanged +=
new
RadComboBoxSelectedIndexChangedEventHandler(combo_SelectedIndexChanged);
}
}
void
combo_SelectedIndexChanged(
object
o, RadComboBoxSelectedIndexChangedEventArgs e)
{
RadComboBox combo = (RadComboBox)o;
GridEditFormInsertItem insertItem = (GridEditFormInsertItem)combo.NamingContainer;
Label lblRate = (Label)insertItem.FindControl(
"lblRateE"
);
// Your code to get string to set to the label
lblRate.Text =
"text changed"
; / Set the text here
// Access the numericTextBox here
RadNumericTextBox txtQauntityE = (RadNumericTextBox)insertItem.FindControl(
"QtyNumericTextBox"
);
// Set the focus to numerictextbox
txtQauntityE.Focus();
}
Happy coding,
Shinu.
0
Amit
Top achievements
Rank 1
answered on 15 Oct 2010, 10:56 AM
Thanks Shinu,that worked just perfectly...:)